如何使用always-on-top对话框结束Swing程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用always-on-top对话框结束Swing程序?相关的知识,希望对你有一定的参考价值。

如何完成该计划?我的意思是在执行它并关闭对话框后,Java进程没有完成。它可以在Eclipse中查看,因此红色图标仍处于活动状态,程序无法完成。

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setAlwaysOnTop(true);
        JOptionPane.showMessageDialog(
            frame, "test info", "test header", JOptionPane.INFORMATION_MESSAGE);
    }
}
答案

在对话框设置为可见后处理框架。

import javax.swing.*;

public class Main {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setAlwaysOnTop(true);
        JOptionPane.showMessageDialog(
            frame, "test info", "test header", JOptionPane.INFORMATION_MESSAGE);
        // When a frame is disposed, the exit action will be called.
        frame.dispose();
    }
}
另一答案

您可以使用以下关闭过程。但它有点难。

System.exit(0);
另一答案

因为你没有调用像:frame.show();frame.setVisible(true);这样的方法

如果您调用其中一种方法,则框架将显示,然后如果您关闭框架,它将停止运行。

代码更新:

     private static void createAndShowGUI() {

        JFrame frame = new JFrame("frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setAlwaysOnTop(true);
        frame.setSize(200, 200);
        frame.setVisible(true);
        JOptionPane.showMessageDialog(frame, "test info", "test header", JOptionPane.INFORMATION_MESSAGE);

    }

以上是关于如何使用always-on-top对话框结束Swing程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SWI-Prolog 上设置闹钟?

如何使用 Ionic (Angular) 在一个对话框中设置开始时间、结束时间和持续时间

arm体系如何对SWI功能

游戏结束时使用画布在游戏中显示对话框

如何运行和结束xshell脚本

2048小游戏——CSS/原生js爬坑之纯CSS模态对话框&游戏结束