我正在阅读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
类似。但在这种情况下,actionPerformed
会在出现event
时自动调用button click
,并且事件会传递给actionPerformed
。无需单独调用此方法并传递Actionevent object
。但我不明白paintComponent
方法是如何发生的。
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
//do something
}
});
由于
答案 0 :(得分:4)
Graphics
对象由paint子系统创建。
你永远不应该自己打电话给paintComponent
,而应该让涂料系统处理它。即使您想使用Graphics
上下文(来自BufferedImage之类的内容)捕获或打印组件,您也应该使用print
或printAll
答案 1 :(得分:3)
他们是类似的问题。 Graphics对象由Jing请求时由Swing库创建,并在JVM调用此方法时传递给paintComponent(Graphics g)
方法。因为你自己并没有直接调用这个方法,所以你永远不会看到正在创建的对象。