我有一个简单的类,可以在 JPanel 中绘制图形。这是我的课:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
class Drawing_panel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(Color.white);
g.setColor(Color.red);
g.fillRect(150, 80, 20, 20);
}
public Dimension getPreferredSize(){
return new Dimension(500,500);
}
}
我有另一个类实例化这个类:
Drawing_panel dp = new Drawing_panel();
中没有构造函数Drawing_panel
类和/或没有显式调用paintComponent()
or getPreferredSize()
方法。我假设该方法正在父级中被调用JPanel
构造函数,但我也没有看到那里的调用。
The paintComponent
从几个不同的地方调用。电话来自JComponent.paint
可能就是您正在寻找的人。
注意paintComponent
is 不从任何构造函数调用. The paintComponent
叫做“一经请求”即当系统决定需要重新绘制组件时。 (例如,当调整组件大小时,或者当窗口从最小化状态恢复时。)需要明确的是:组件不是“先绘制,然后使用”,而是“先使用,然后在需要时绘制”。
您无需担心整个绘画调用链,因为它完全由 Swing 和所谓的事件调度线程处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)