首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

新手:下面程序中paint()方法怎么被调用的,有高手能帮助解释一下吗

2012-01-19 
新手:下面程序中paint()方法如何被调用的,有高手能帮助解释一下吗?先谢谢各位大侠了!前两个是超类定义,分

新手:下面程序中paint()方法如何被调用的,有高手能帮助解释一下吗?
先谢谢各位大侠了!
前两个是超类定义,分别为DrawPanel,   DrawFrame,具体如下:

import     java.awt.*;    
import     javax.swing.*;    
 
public     class     DrawPanel     extends     JPanel{    
                      private     int     width=300;    
                      private     int     height=300;    
                      protected     DrawPanel(){    
                                              setPreferredSize(new     Dimension(width,height));    
                                              }    
                      protected     DrawPanel(final     int     w,final     int     h){    
                                                                      width=w;    
                                                                      height=h;    
                                                                      setPreferredSize(new     Dimension(width,height));    
                                                                      }    
                      public     int     getWidth(){    
                                                                                              return     width;    
                                                                                              }    
                      public     int     getHeight(){    
                                                                                                                      return     height;    


                                                                                              }    
                      }    
-------------------------------------------------------------------------    
import     java.awt.*;    
import     java.awt.event.*;    
import     javax.swing.*;    
 
public     class     DrawFrame     extends     JFrame{    
                      public     void     add(final     JPanel     panel){    
                                              getContentPane().add(panel,BorderLayout.CENTER);    
                                              }    
                                                 
                                              private     void     quit(){    
                                                                      System.exit(0);    
                                                                      }    
                                                                         
                                                                      public     DrawFrame(final     String     title){    
                                                                                              super(title);    
                                                                                              Button     quitButton=new     Button( "Quit ");    


                                                                                              quitButton.addActionListener(new     ActionListener(){    
                                                                                                                      public     void     actionPerformed(final     ActionEvent     e){    
                                                                                                                                              quit();    
                                                                                                                                              }    
                                                                                                                      });    
                                                                                                                         
                                                                                                                      JPanel     buttonPanel=new     JPanel(new     FlowLayout());    
                                                                                                                      buttonPanel.add(quitButton);    


                                                                                                                      getContentPane().setLayout(new     BorderLayout());    
                                                                                                                      getContentPane().add(buttonPanel,     BorderLayout.SOUTH);    
                                                                                                                      addWindowListener(new     WindowAdapter(){    
                                                                                                                                              public     void     windowClosing(final     WindowEvent     evt){    
                                                                                                                                                                      quit();    
                                                                                                                                                                      }    
                                                                                                                                              });    


                                                                                              }    
                                                                                                 
                                                                                              public     void     centreOnScreen(){    
                                                                                                                      Dimension     displaySize=getToolkit().getScreenSize();    
                                                                                                                      Dimension     windowSize=getSize();    
                                                                                                                      int     x=(displaySize.width-windowSize.width)/2;    
                                                                                                                      int     y=(displaySize.height-windowSize.height)/2;    
                                                                                                                      if(x <0){    
                                                                                                                                              x=0;    


                                                                                                                                              }    
                                                                                                                                              if(y <0){    
                                                                                                                                                                      y=0;    
                                                                                                                                                                      }    
                                                                                                                                                                      setLocation(x,y);    
                                                                                                                      }    
                      }    
-------------------------------------
------------------------------------  
import     java.awt.*;    
import     java.awt.geom.*;    


 
public     class     DrawLine     extends     DrawPanel{    
                         
                      public     static     void     main(final     String[]     args){    
                                              DrawFrame     frame=new     DrawFrame( "Drawing     of     a     line ");    
                                              DrawLine     drawing=new     DrawLine();    
                                              frame.add(drawing);    
                                              frame.pack();    
                                              frame.centreOnScreen();    
                                              frame.setVisible(true);        
                                                 
                                                 
                                              }    
                                                 
                                              public     DrawLine(){    
                                                                      }    
                                              public     void     paint(final     Graphics     g){    
                                                                                                                      Graphics2D     g2d=(Graphics2D)g;    


                                                                                                                      Line2D     aLine=new     Line2D.Double(10,10,70,70);    
                                                                                                                      g2d.draw(aLine);    
                                                                                                                      }

[解决办法]

当第一次显示组件,或组件部分可见,或显示器需要刷新时调用此方法.

热点排行