我的程序有 3 节课。1)主要,2)框架,3)绘图板。我的程序的逻辑是,每次用户单击新模式按钮时都会显示一个新图形(并且工作正常)。
第一类 - 主要方法
public class mainPage {
public static void main(String[]args){
JFrame appFrame = new Frame();
appFrame.setVisible(true);
appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
}
}
第二课 - 描述布局(我使用网格包布局)
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”并重新绘制。油漆组件属于第三类(绘图板)。尽管这似乎没有给我带来问题(例如,除非用户单击按钮,否则面板上不会显示任何绘图),但我只是好奇这是怎么发生的。那是因为我在FRAME类()中编写了这段代码。我编写此代码的目的是确保绘图应放置在此特定面板中(我有 3 个面板),但除非单击按钮,否则不要调用第 3 类。
JPanel pDraw = new JPanel();
pDraw.add(new drawingBoard()); //place drawing here