我试图理解repaint
和paintComponents
如何在Java Swing中工作,并想知道为什么这个程序只显示"你好"当它被执行时。
class MyLabel extends JLabel{
private static final long serialVersionUID = 1L;
public MyLabel(){
System.out.println("hello");
repaint();
}
@Override
public void paintComponents(Graphics g) {
super.paintComponents(g);
System.out.println("painting");
}
}
public static void main(String[] args) {
MyLabel lbl = new MyLabel();
}
答案 0 :(得分:2)
public void paintComponents(Graphics g) {
super.paintComponents(g);
应该是:
public void paintComponent(Graphics g) {
super.paintComponent(g);
(不是复数)。
这样:
painting
字符串(与API绘制组件所需的次数相同)。答案 1 :(得分:1)
在这里,您只需创建一个MyLabel实例。因此,你在构造函数中的sout被调用并打印你好。 通常在swing repaint()方法中,可以通过系统事件或app-event获取触发器。但是,由于您刚刚创建了一个实例而没有将其放置在任何地方,因此不会触发任何事件 你可以阅读Painting in AWT and Swing