点击joptionpane弹窗确定后,我的主窗体和弹窗一起关闭了
时间: 2024-01-15 21:03:46 浏览: 67
这个问题可能是因为你在主窗体中打开了 JOptionPane 弹窗,但是没有使用正确的参数来控制弹窗的行为。可以尝试使用下面的代码来打开 JOptionPane 弹窗,并设置它的选项:
```java
JOptionPane.showMessageDialog(frame, "Message", "Title", JOptionPane.PLAIN_MESSAGE);
```
其中,第一个参数是主窗体的对象,第二个参数是要显示的消息,第三个参数是弹窗的标题,最后一个参数是弹窗的类型。如果你使用了这种方式来打开弹窗,应该就不会出现主窗体和弹窗一起关闭的问题了。
相关问题
我用的是joptionpane怎么关闭弹出后,主窗体依然存在
使用 `JOptionPane` 弹窗时,你可以通过设置它的第一个参数 `parentComponent` 来指定它的父组件。如果你将主窗体对象作为 `parentComponent`,那么弹窗就会与主窗体关联在一起,关闭弹窗后主窗体依然存在。示例代码如下:
```java
import javax.swing.*;
public class MainFrame extends JFrame {
private JButton btnShowDialog;
public MainFrame() {
// 初始化主窗体
setTitle("Main Frame");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加按钮
btnShowDialog = new JButton("Show Dialog");
btnShowDialog.addActionListener(e -> {
// 显示弹窗
JOptionPane.showMessageDialog(MainFrame.this, "This is a message", "Title", JOptionPane.INFORMATION_MESSAGE);
});
add(btnShowDialog);
// 显示主窗体
setVisible(true);
}
public static void main(String[] args) {
new MainFrame();
}
}
```
在这个示例代码中,我们将主窗体对象 `MainFrame.this` 作为 `JOptionPane.showMessageDialog` 方法的第一个参数,这样弹窗就与主窗体关联在一起了。当用户关闭弹窗后,主窗体依然存在,可以继续与主窗体进行交互。
system.exit(0)是在我的退出按钮的监听里,我用的是JOptionPane.showMessageDialog不是在我的退出按钮监听里面,而且我也没有按退出按钮,那为什么我关闭弹窗后,我的主窗体也会被关闭呢
如果您在弹窗中使用了JOptionPane.showMessageDialog()方法,而且在弹窗中点击了“关闭”按钮,那么弹窗中的代码会继续执行,直到执行到System.exit(0)为止,这将终止整个Java虚拟机,因此您的主窗体也会被关闭。
如果您只是想关闭弹窗而不关闭主窗体,可以使用dispose()方法来关闭弹窗,而不是使用System.exit(0)。例如,可以使用以下代码关闭弹窗:
```
JOptionPane.showMessageDialog(null, "弹窗提示信息");
// 关闭弹窗
Window window = SwingUtilities.getWindowAncestor(yourDialog);
window.dispose();
```
这样只会关闭弹窗而不会关闭主窗体。
阅读全文