对不起,我搜索了很多以找到这 3 个功能(绘画、重绘、绘画组件)如何在它们之间进行交互,但我不知道。你能准确地解释一下他们什么时候被调用(因为有时java会在没有我问他的情况下调用它)他们究竟做了什么以及它们之间有什么区别。谢谢
问问题
17028 次
1 回答
7
我不确定“绘画”,但我可以解释一下 repaint() 和 paintComponent() 之间的关系。
在我有限的 java 经验中,paintComponent() 方法是 JPanel 类中的一个方法,并且是“swing”的成员。
paintComponent() 方法处理所有的“绘画”。本质上,它使用 Graphic 对象将您想要的任何内容绘制到 JPanel 中。
repaint() 是所有 JPanel 对象的继承实例方法。调用 [your_JPanel_object].repaint() 调用 paintComponent() 方法。
每次您希望更改 JPanel 的外观时,都必须调用 repaint()。
某些动作会自动调用 repaint() 方法:
- 重新调整窗口大小
- 最小化和最大化您的窗口
仅举几例。
简而言之,paintComponent() 是在 JPanel 或您自己的扩展 JPanel 的自定义类中定义的方法。repaint() 是在另一个类(如 JFrame)中调用的方法,最终调用paintComponent()。
这是一个例子:
public class MyPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.draw([whatever you want]);
...
...
}
}
public class MyFrame extends JFrame{
public MyFrame(){
MyPanel myPanel = new MyPanel();
myPanel.repaint();
}
}
于 2013-06-01T18:14:50.260 回答