В моей программе 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