作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
对不起,我进行了很多搜索以找到这 3 个函数(paint、repaint、paintComponent)如何在它们之间交互,但我不知道。你能准确地解释一下它们什么时候被调用吗(因为有时 java 会在我不问他的情况下调用它)它们到底做了什么以及它们之间的区别是什么。谢谢
最佳答案
关于“paint”我不太清楚,但是我可以解释repaint()和paintComponent()之间的关系。
以我有限的java经验,paintComponent()方法是JPanel类中的一个方法,是“swing”的成员。
paintComponent() 方法处理所有“绘画”。本质上,它使用 Graphic 对象将您想要的任何内容绘制到 JPanel 中。
repaint() 是所有 JPanel 对象的继承实例方法。调用 [your_JPanel_object].repaint() 调用 paintComponent() 方法。
每次您希望更改 JPanel 的外观时,都必须调用 repaint()。
某些 Action 会自动调用 repaint() 方法:
仅举几例。
简而言之 paintComponent() 是在 JPanel 或您自己的扩展 JPanel 的自定义类中定义的方法。 repaint() 是在另一个最终调用 paintComponent() 的类(例如 JFrame)中调用的方法。
这是一个例子:
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();
}
}
关于java - 绘制、重绘、paintComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875572/
我是一名优秀的程序员,十分优秀!