我写了一个绘画类,并将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);
}
}
答案 0 :(得分:1)
我尝试了你的代码,paintComponent
每次都没有调用它。当你调用setVisible
时,我认为你无法控制JFrame何时调用pack()。这可能取决于您的操作系统如何管理窗口。