我需要将grapics对象'g'从paint方法传递到action方法。类似这样的东西:
public boolean action(Event event, Object obj)
{
Graphics g=getGraphics();
repaint();
if (event.target == choice)
String selection = choice.getSelectedItem();
if (selection.equals("do something"))
{
doSomething(g);
repaint();
}
else if (selection.equals("do something else"))
{
Somethingelse(g);
repaint();
}
return(true);
}
else
return(false);
}
我试图将g声明为全局图形变量,但它不起作用。还有别的办法吗。任何帮助都将不胜感激。。谢谢
我假设这是java,并且您正在重写Swing组件(所以getGraphics()实际上是可用的)。
试试Graphics g = this.createGraphics()
,可能会有所帮助。此外,请确保从事件调度线程调用repaint()
方法。如果此操作链接到UI,通常情况就是这样。可以肯定的是,将重新喷漆包在Runnable中,并将其发送到EDT:的末尾
SwingUtilities.invokeLater(new Runnable() {
public void run() {
repaint();
}
}