油漆,重漆,油漆组件
对不起,我经常搜索这三个函数(paint,repaint,paintComponent)如何在它们之间进行交互,但我不知道。 你能在他们被叫的时候准确地解释我吗(因为有时候java会在没有我问他的情况下调用它)他们究竟做了什么,他们之间有什么区别。 谢谢
我不确定“paint”,但我可以解释repaint()和paintComponent()之间的关系。
在我对java的有限经验中,paintComponent()方法是JPanel类中的一个方法,并且是“swing”的成员。
paintComponent()方法处理所有“绘画”。 从本质上讲,它使用Graphic对象将您想要的任何内容绘制到JPanel中。
repaint()是所有JPanel对象的inheritance实例方法。 调用[your_JPanel_object] .repaint()会调用paintComponent()方法。
每次要更改JPanel的外观时,都必须调用repaint()。
某些操作会自动调用repaint()方法:
- 重新调整窗口大小
- 最小化和最大化您的窗口
仅举几例。
IN SHORT 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(); } }