为什么一个新的图形对象没有传递给 Java swing 中的 paintComponent 方法



我正在阅读swing tutorial .从那里提到的:

The paintComponent method of JComponent is automatically called 
when a frame is drawn/re-drawn. 

但是,我不明白的是传递给它的Graphics Object是什么。我看不见Graphics类型的任何新对象instanstiated和传递。那么这一切是如何发生的呢?

public void paintComponent(Graphics g){
              Graphics2D g2 = (Graphics2D)g;
              g2.drawimage(image,x,y,null);
              //
            }

我想这与actionlisteners的情况类似.但在这种情况下,当event发生(例如button click)并且事件传递给actionPerformed时,会自动调用actionPerformed。无需单独调用此方法并传递Actionevent object。但我不明白paintComponent方法是如何发生的。

button.addActionListener(new ActionListener()
   {
     public void actionPerformed(ActionEvent event){
              //do something
     } 
   });

谢谢

Graphics对象由 paint 子系统创建。

你永远不应该自己打电话给paintComponent,而应该简单地让油漆系统处理它。 即使您想使用Graphics上下文(从 BufferedImage 之类的内容)捕获或打印组件,也应该使用printprintAll

看看 AWT 和 Swing 中的绘画

它们是类似的问题。图形对象由 Swing 库应 JVM 的请求创建,并在 JVM 进行此方法调用时传递到 paintComponent(Graphics g) 方法中。由于您自己没有直接调用此方法,因此您永远不会看到正在创建的对象。

相关内容

  • 没有找到相关文章

最新更新