我正在阅读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 之类的内容)捕获或打印组件,也应该使用print
或printAll
看看 AWT 和 Swing 中的绘画
它们是类似的问题。图形对象由 Swing 库应 JVM 的请求创建,并在 JVM 进行此方法调用时传递到 paintComponent(Graphics g)
方法中。由于您自己没有直接调用此方法,因此您永远不会看到正在创建的对象。