如何用总在最前面的对话框结束 Swing 程序?
How to end Swing program with always-on-top dialog?
如何完成程序?我的意思是在执行它并关闭对话框后 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);
}
}
因为你没有调用这样的方法:
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);
}
您可以使用以下关闭进程。但是有点难。
System.exit(0);
设置对话框可见后处理框架。
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();
}
}
如何完成程序?我的意思是在执行它并关闭对话框后 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);
}
}
因为你没有调用这样的方法:
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);
}
您可以使用以下关闭进程。但是有点难。
System.exit(0);
设置对话框可见后处理框架。
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();
}
}