我的程序有3节课。( 1)主,2)帧,3) drawingBoard。我的程序的逻辑是,每次用户单击new按钮时,都会显示一个新的绘图(并且这个操作很好)。
一级-主要方法
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‘并重新绘制。油漆组件位于第三类(drawingBoard)。虽然这似乎没有给我一个问题(例如,没有显示在面板上,除非用户点击按钮),我只是好奇这是如何发生的。这是因为我在框架类()中编写了这段代码。我编写这段代码的目的是确保绘图应该放在这个特定的面板中(我有3个面板),但是除非单击了按钮,否则不会调用第三类。
JPanel pDraw = new JPanel();
pDraw.add(new drawingBoard()); //place drawing here发布于 2009-10-11 16:21:59
repaint方法(以及随后,paintComponent不仅被JFrame调用,而且还通过Swing本身调用,当需要重新绘制JPanel的内容时也是如此。
AWT和Swing中的绘画文章是一个很好的地方,可以开始了解绘画是如何工作的。
在本例中,repaint方法是由本文称为系统触发绘制的事件调用的。
在系统触发的绘制操作中,系统请求组件呈现其内容,通常原因如下:
https://stackoverflow.com/questions/1551052
复制相似问题