java - 仅在 actionPerformed 上打开一个窗口

标签 java swing jframe actionlistener

我浏览了有关如何在单击按钮时仅打开一个窗口的主题,但没有任何解决方案有帮助,也许是因为我的代码结构有点不同。

所以我有一个扩展 JFrame 的主窗口类,其中一个按钮应该在单击时打开一个新窗口。我已经在一个单独的类中为新窗口定义了小部件/面板等。目前,每次我单击该按钮都会打开一个新窗口。我想这样做,如果一个窗口已经打开,那么一旦再次单击按钮,它就会切换到该窗口。

这是我的一些代码:

public class MainWindow extends JFrame{

    /*
     * create widgets and panels
     */
    Button.addActionListener(new ActionListener() { // the button that opens 
                                                    //a new window

                @Override
                public void actionPerformed(ActionEvent e) {
                    Window2 ww = new Window2(); //creating the new window here

                }
            });
    }

注意。 Window2 类还扩展了 JFrame,如果这有任何帮助的话。

谢谢

最佳答案

actionPerformed 方法中提取对象创建,因为每次单击按钮时都会创建新对象。以下内容可以帮助您:-

  1. 制作一个Window2类singalton,了解有关singalton的更多详细信息,请点击here .

2.添加空检查如下:-

    ....
Window2 ww = null; // static or instence variable
......
@Override
public void actionPerformed(ActionEvent e) {
if(ww==null)
{
     ww = new Window2(); 
     ww.someMethod();

}
else
{
   ww.someMethod();

}

} });

关于java - 仅在 actionPerformed 上打开一个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22170327/

相关文章:

java - 在java中加载游戏的图像

java - 在 JOptionPane 中对齐文本

java - 如何从 Java 最小化 JFrame 窗口?

java - 如何在自定义查询中加载@ElementCollection?

java - Fast Scroll In ListView 使用 UniversalImageloader 优化或使用 View 引用

java - 如何让我的简单猜谜游戏发挥作用?

java - JFrame 调整大小

java - 如何在 Jframe 中创建 JPanel?

java - 使用独特的 ImageIcons 动态初始化 JButton

java - 如何知道在 Google Maps v2 for Android 上点击了哪个标记?