在这种情况下,第一个坐标应该是 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/