如何制作一个不会被调用两次的绘画类?

时间:2015-04-03 18:49:48

标签: java swing graphics jpanel paintcomponent

我写了一个绘画类,并将jpanel添加到框架中,但由于某种原因它被调用了两次,因为我在图形方法中放置了一个print语句,并且它打印了两次。下面的代码是我的包裹中的所有代码。

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Paint extends JPanel {

static Paint paint = new Paint();

@Override
public Dimension getPreferredSize() {
    return new Dimension(500, 500);
}

public void paintComponent(Graphics g) {

    super.paintComponent(g);

    System.out.println("Hello");

}

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.add(paint);

    frame.pack();
    frame.setLocation(300, 300);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

} 

1 个答案:

答案 0 :(得分:1)

我尝试了你的代码,paintComponent每次都没有调用它。当你调用setVisible时,我认为你无法控制JFrame何时调用pack()。这可能取决于您的操作系统如何管理窗口。