使用ActionListener从JPanel中清除图形



我的问题是,如何使用我的动作监听器清除图形,并通过再次运行OtherPanel来创建一组新的图形?

public class MainFrame extends JFrame
  {
   private OtherPanel panel;
       public MainFrame()
   {
        panel = new OtherPanel();
       }
   class OtherPanel extends JPanel 
   {
      private OtherPanel()
      {
    ...
      }
      public void paintComponent(Graphics g) {
          super.paintComponent(g);
          Graphics2D g2d = (Graphics2D) g;            
              ....
          }
      private class ReloadListener implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
           }
        }
    }
class OtherPanel extends JPanel 
{
    private boolean isReset;
    private OtherPanel()
    {
    ...
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(!isReset){
            //your painting code here
        }
    }
    public void setReset(boolean reset){
        isReset = reset;
    }
    private class ReloadListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            setReset(true);
            repaint();
        }
    }
}

这一切都取决于"重置"面板的外观。我只保留了默认的super.paintComponent(),您可能需要更改它。当你想在面板上绘制一些东西时,不要忘记在代码的某个地方添加setReset(false)

private class ReloadListener implements ActionListener
 {
    public void actionPerformed(ActionEvent e)
     {
       newPic();
       panel.updateUI();            
  }
   public MainFrame newPic()
   {
      return new MainFrame();
   }
 }

最新更新