【发布时间】:2011-04-15 08:00:33
【问题描述】:
我有一个 JFrame,我在其上使用覆盖 paint 方法来显示一些图形。我还想向它添加一个 JPanel,它将显示在图形的顶部。现在,我看到的只是通过 JFrame 绘制方法创建的图形。
这是我的 JPanel:
public class NoteDraw extends JPanel {
public NoteDraw() {
setSize(200, 100);
setBackground(Color.BLACK);
}
@Override public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(0, 0, 100, 100);
}
}
这是我的 JFrame:
public class ui extends JFrame {
public void paint(Graphics g) {
//do some drawing here...
}
}
这是我的主要内容:
public class Main {
static ui main_gui = new ui();
public static void main(String[] args) {
NoteDraw note = new NoteDraw();
main_gui.getContentPane().add(note);
main_gui.setVisible(true);
}
}
【问题讨论】:
-
和之前/之后“//在这里画一些……”你当然有
super.paint(g);,对吧? -
不,我既是智障,又是 Java 新手…… super.paint(g); 是什么?无论如何?
-
@tybro0103,它将调用基本行为(框架的正常行为来绘制其内容)——就像您在面板中拥有
super.paintComponent(g);一样。 -
谢谢,我仍然得到相同的结果。
-
@tybro0103,以您的示例为例,您可能应该将
super.paint(g);放在方法的末尾(在您自己的自定义绘画之后)。这会改变肤色吗?
标签: java swing graphics awt jframe