私のプログラムには3つのクラスがあります。1) メイン、2) フレーム、3) 描画ボード。私のプログラムのロジックは、ユーザーが [新しいパターン] ボタンをクリックするたびに新しい図面が表示されることです (これは正常に機能します)。
第 1 クラス - メイン メソッド
public class mainPage {
public static void main(String[]args){
JFrame appFrame = new Frame();
appFrame.setVisible(true);
appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
}
}
2 番目のクラス - レイアウトについて説明します (私は Grid Bag Layout を使用します)
public class Frame extends JFrame implements ActionListener {
public Frame (){
GridBagLayout m = new GridBagLayout();
Container c = (Container)getContentPane();
c.setLayout (m);
GridBagConstraints con;
JButton bPattern = new JButton("New Pattern");
....
bPattern.addActionListener(this);
JPanel pDraw = new JPanel();
.....
pDraw.add(new drawingBoard()); //drawing will be placed in this panel
}
public void actionPerformed(ActionEvent e) {
repaint();
}
}
3 番目のクラス - 描画関数 (paintComponent () など) を実行します。
public class drawingBoard extends JPanel {
public drawingBoard(){}
public void paintComponent(Graphic g){}
....
}
問題は、コンソールを見ると、ユーザーがボタンをクリックしていなくても、プログラムが「drawingBoard」クラスを呼び出して再描画しているように見えることです。ペイント コンポーネントは 3 番目のクラス (drawingBoard) にあります。これで問題が発生することはないように思えますが (たとえば、ユーザーがボタンをクリックしない限り、パネルに描画が表示されないなど)、これがどのように発生したのか興味があります。これは、このコードを FRAME クラス () で記述したためです。このコードを作成する意図は、この特定のパネル (3 つのパネルがあります) に図面を配置する必要があることを確認することですが、ボタンがクリックされていない限り、3 番目のクラスを呼び出すことはありません。
JPanel pDraw = new JPanel();
pDraw.add(new drawingBoard()); //place drawing here