gpt4 book ai didi

java - 绘制、重绘、paintComponent

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:49 26 4
gpt4 key购买 nike

对不起,我进行了很多搜索以找到这 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com