java - 使用 JButton 问题打开一个新的 JFrame

标签 java swing jframe jbutton multiple-instances

我正在创建一个简单的任务管理器,我遇到的问题是我想在单击 JButton 时打开一个新的 JFrame。窗口打开,但问题是打开了多个窗口。我有两个类 App(Main) 和 NewTask。如果有人可以查看代码并了解我做错了什么,那就太好了,抱歉,如果我发布了太多代码,在此先感谢。

App Class

    JButton btnNewTask = new JButton("New Task");
    btnNewTask.addActionListener(new ActionListener() 
{
     public void actionPerformed(ActionEvent e)
{
     JFrame frame = new JFrame ("New Task");
     frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
     //frame.getContentPane().add (new NewTask());
     frame.pack();
     frame.setVisible (true);
}
});

btnNewTask.setBounds(10, 216, 116, 23);
contentPane.add(btnNewTask);

   NewTask Class

     /**
 * Launch the application.
 */
//public static void main(String[] args) 
{
    EventQueue.invokeLater(new Runnable() 
    {
        public void run() 
        {
            try 
            {
                NewTask frame = new NewTask();
                frame.setVisible(true);
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public NewTask() 
{

    setTitle("New Task");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

最佳答案

仅创建一次新框架作为 ActionListener 的一个字段,并使用按钮更改它的可见性。

  JFrame frame = null;

  public void actionPerformed(ActionEvent e) {
    if ( frame == null ) {
      frame = new NewTask();
      frame.pack();
    }
    frame.setVisible( !frame.isVisible() );
  }

但仍然是个坏主意,因为有多个帧 =)

How to Make Dialogs

关于java - 使用 JButton 问题打开一个新的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13590583/

相关文章:

java - 具有至少一个任意类型注释的方法的切入点

java - IInAppBillingService.aidl 无法在 Android Studio 中生成 Java 文件

java - 如何在 XSD 中定义 CDATA 类型,以便用户不必转义字符或使用 "<![CDATA"标记?

java - 如何在 Java 中使用 JScrollPane

Java 硬件加速

Java在netbeans中清除jFrame

Java:JFrame 与 MouseListener、KeyListener 和 PaintComponent 相关的问题

java - Android 构建时代号一个 Dex 问题?

java - 绘制、重绘、paintComponent

Java JFrame 创建关闭按钮