ソフトウェア エンジニアリング コースの最初の課題として、この非常に基本的で単純な Swing チュートリアルを行っていますが、非常に奇妙な理由で、私の JPanel で paintComponent メソッドが呼び出されません。私は過去に Java Swing を使用してきましたが、このような問題は一度もありませんでした。
私が使用しているチュートリアルは、Oracle サイトにあります (サイトにアクセスしてコードを確認するのは、私が持っているコードと同じなので簡単です)。
なぜそれがうまくいかないのか、誰か説明してもらえますか?
私のコード:
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
public class PaintDemo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
}
});
}
private static void createGUI() {
System.out.println("Created GUI on EDT? "+
SwingUtilities.isEventDispatchThread());
JFrame frame = new JFrame("Yay, first 2102 lab!!");
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); // allows to close the program
DemoPanel panel = new DemoPanel();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
class DemoPanel extends JPanel {
public DemoPanel() {
setBorder(BorderFactory.createLineBorder(Color.BLACK));
}
public Dimension getPreferredSize() {
return new Dimension(250,200);
}
public void paintComponenet(Graphics g) {
super.paintComponent(g);
g.drawString("This is my custom panel!",10,20);
}
}