java - 窗口关闭和 JFrame 的单个实例

标签 java swing

两个+1问题:

  1. 我有一个独立的应用程序并为其创建了一个可运行的 jar。现在,当我双击它时,会打开一个 JFrame 窗口,我需要登录。问题是,如果我双击它,我可以打开多个 JFrame 窗口。我需要的是一旦我登录,每当我尝试再次打开它时,它应该显示当前登录的窗口。或者这样说,创建该 JFrame 窗口的单个实例。

  2. 关闭窗口时,我需要在关闭之前做一些操作。我知道我可以使用 WindowListener,但是当我关闭 JFrame 时(如终止应用程序),这不起作用。有没有办法在手动终止之前执行任何操作?

编辑:另一个问题:

  1. 我做了一个 setExtendedState(JFrame.ICONIFIED); 来在单击“x”(关闭)时最小化 JFrame 窗口。它最小化但从任务栏中消失。有没有办法像普通最小化一样保留在任务栏中?

最佳答案

1)

让您的 main 方法搜索该程序的另一个实例。如果找到,请聚焦该窗口并让它自行关闭。您可以在类似的问题中阅读更多相关信息:Question

2)

使用关闭 Hook :

Runtime.getRuntime().addShutdownHook(new Thread() {

    @Override
    public void run() {...} //your code to run when closing the program

}

关于java - 窗口关闭和 JFrame 的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22767961/

相关文章:

java - 将 JPanel 背景设置为透明

java - 如何从您的 Activity 的前一个实例中判断线程已经完成?

java - 此线程中的引用在哪里?

java - 我必须在 blueJ 中创建 3 个对象并调用 display() 但我什至无法创建对象。请看代码结果

java - 获取 Swing 表中的数据库信息作为输出

java - JTable 中的复选框始终返回 false,尽管已选中

java - 修复java GUI表的长度

java - 如何从 spring-security 源代码构建示例

Java数组:Java pass by reference and pass by value?

Java Swing : Separation of logic and GUI