4

对不起,我搜索了很多以找到这 3 个功能(绘画、重绘、绘画组件)如何在它们之间进行交互,但我不知道。你能准确地解释一下他们什么时候被调用(因为有时java会在没有我问他的情况下调用它)他们究竟做了什么以及它们之间有什么区别。谢谢

4

1 回答 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 回答