我寫了一個paint類,並將jpanel添加到框架中,但由於某種原因它被調用了兩次,因爲我在圖形方法中放置了打印語句,並且打印了兩次。下面的代碼是我包裝中的所有代碼。如何創建一個不會被調用兩次的paint類?
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);
}
}
代碼似乎只打印一次Hello。 – 2015-04-03 19:01:33
我測試了它,它的工作原理應該如此(只打印一次)。你是從IDE運行它嗎?試着從命令行看它是否相同。也許這是一個焦點問題。 – 2015-04-03 19:02:18
無論何時都需要它。如果您只想繪製一次繪製過程,您可以在離屏圖像上繪製它,然後在調用paintComponent時繪製圖像。 – Bubletan 2015-04-03 19:02:26