java - 如果第一个坐标为 0,0,paint 方法将在 jFrame 外部绘制

标签 java swing jframe paintcomponent

在这种情况下,第一个坐标应该是 0,0 而不是 8,30。我做错了什么(我正在使用 NetBeans)

import java.awt.Color;
import java.awt.Graphics;
public class TEST extends javax.swing.JFrame {

@Override
public void paint(Graphics g){
    super.paint(g);
    g.setColor(Color.blue);
    g.drawRect(8, 30, 200, 200);
    repaint();
}}

最佳答案

JPanel 添加到框架并在其中绘制。框架的坐标包括装饰(标题栏、边框等)。它看起来像这样:

public class Test extends JFrame {
    public static void main(String[] args) {
        new Test();
    }
    private Test() {
        add(new MyPanel());
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(600, 600);
        setVisible(true);
    }
    private class MyPanel extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.blue);
            g.drawRect(8, 30, 200, 200);
        }
    }
}

此外,不要在 paint(); 中调用 repaint();。这将导致无限循环并卡住整个程序。

关于java - 如果第一个坐标为 0,0,paint 方法将在 jFrame 外部绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183529/

相关文章:

java - 泛型——我是不是遗漏了什么或者有什么意义?

java - 枚举持续时间问题

java - 在不同的类中使用 ActionListener

java - 奇怪的 JFrame 大小

java - 如何以编程方式创建 keycloak 客户端角色并分配给用户

Java:仅当选择右侧菜单项时才继续迭代数组列表

java - 在 JTextArea 或 JTextPane 中设置文本样式

java - 从另一个类将 JFrame 添加到主 GUI 框架

Java显示不同的对象

Java KeyListener 不起作用