0

我需要将图形对象'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 声明为全局图形变量,但它不起作用。有没有另一种方法可以做到这一点。任何帮助表示赞赏.. 谢谢..

4

1 回答 1

0

我假设这是 java 并且您正在覆盖 Swing 组件(因此 getGraphics() 实际上是可用的)。

试试看Graphics g = this.createGraphics(),可能会有帮助。此外,请务必repaint()从事件调度线程中调用方法。如果此操作链接到 UI,则通常是这种情况。可以肯定的是,将重绘包装在 Runnable 中并将其发送到 EDT 的末尾:

SwingUtilities.invokeLater(new Runnable() { 
    public void run() {
        repaint();
    }
}
于 2012-11-20T07:21:38.860 回答