当前位置: 首页 > 知识库问答 >
问题:

JOptionPane当我点击“OK”时如何停止关闭

徐杰
2023-03-14

下面是我的代码:(它非常混乱,我只是在收集我的想法。我有一个更正式的程序,它要大得多,我将在稍后实现它)

当我选择A-E时,我会弹出一个带有“选择”或“取消”的对话框。我不希望原来的框架关闭。

 import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JLabel;

import java.awt.*;
import javax.swing.*;
public class Quiz
{
    public static void main(String[] args) 
    {
        String message = "";
        for(int j = 0; j < 40; j++)
            message += "hello world ";

        JScrollPane scrollPane = new JScrollPane(new JLabel(message));
        scrollPane.setPreferredSize(new Dimension(500,400));
        Object test = scrollPane;


        String[] possibleAns = { "E", "D", "C", "B", "A" };   

        JTextArea textArea = new JTextArea(message);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        textArea.setMargin(new Insets(5,5,5,5));
        scrollPane.getViewport().setView(textArea);
        test = scrollPane;

        int rc = JOptionPane.showOptionDialog(null, test, "Advanced Quiz   Program",
                JOptionPane.WARNING_MESSAGE, 0, null, possibleAns, possibleAns[0]);





        System.out.println(rc);

        String[] pick = {"Pick", "Close" }; 
        switch(rc)
        {
            case 4: 
                    System.out.println("You picked A");
                    JScrollPane scrollPane2 = new JScrollPane(new JLabel(message));
                    scrollPane.setPreferredSize(new Dimension(500,400));
                    Object messaseA = scrollPane;





                    JTextArea textArea2 = new JTextArea("blah blah");
                    textArea.setLineWrap(true);
                    textArea.setWrapStyleWord(true);
                    textArea.setMargin(new Insets(5,5,5,5));
                    scrollPane.getViewport().setView(textArea);
                    test = scrollPane;
                    int retVal = JOptionPane.showOptionDialog(null, test, "Advanced Quiz Program",
                    JOptionPane.WARNING_MESSAGE, 0, null, pick, pick[0]);
                     break;
            case 3:
                            System.out.println("You picked B");
                            break;
            case 2:
                            System.out.println("You picked C");
                            break;
            case 1:
                            System.out.println("You picked D");
                            break;
            case 0:
                            System.out.println("You picked E");
                            break;
            default:
                            System.out.println("error");
        }

    }
}

共有1个答案

长孙宜
2023-03-14

最佳选择:不要使用joptionpane。如果您想要一个顶级的主窗口,请使用JFrame,如果您想要一个保持打开但非模式的对话框窗口,请使用非模式的JDialog。如果您想要一个模式对话框窗口,那么可以使用JOptionPane或模式JDialog(JOptionPane实际上是从它创建的)。

如果必须使用JOptionPane,则可以使用JOptionPane构造函数创建一个对话框,从中提取对话框,并使其非模态化。

根据您的编辑和代码,您似乎确实试图使用JOptionPane作为主程序窗口,这是您真的不想做的。让我建议:

    null
 类似资料:
  • 问题内容: 我想使用新配置重新启动elasticsearch节点。正常关闭节点的最佳方法是什么? 关闭进程是关闭服务器的最佳方法,还是我可以使用一些神奇的URL关闭节点? 问题答案: 更新的答案。 API已在elasticsearch 2.x中删除。 一些选项: 在您的终端(基本上是开发模式)中,只需键入“ Ctrl-C” 如果您以守护程序()的身份启动它,请找到PID并终止该进程:将彻底关闭El

  • 我想让用户在点击我的网站背景图片(父图)时进入某个网站,但当用户点击我的网站内容(子图)时,该功能需要关闭,然后当用户再次点击背景图片(父图)时,该功能将被activity。 我尝试了很多次,但当我点击我的网站内容(子div),并再次点击网站背景图片(父div),该功能不起作用。 我能做什么?谢谢! 下面是我的代码:

  • 我通过创建固定数量的线程来使用执行器服务来进行HTTP GET数据检索。 当Tomcat停止时,我们会出现以下错误: 严重:web应用程序[/viewer]似乎已启动名为[ThreadExecutor_51616156]的线程,但未能停止该线程。这很可能会造成内存泄漏。 这是真的吗?在没有这些服务错误的情况下,如何正确停止tomcat。

  • 我使用Pygame和Pydub用Python编写了一个音乐播放器(我使用Pygame实际播放音乐,而Pydub可能与这个问题无关)。 除非我切换到另一个Pygame窗口,否则即使切换了窗口,音乐也能正常工作。我认为如果我编译它(cx_freeze),这种效果会消失,但那不起作用。 所以我想知道是否有什么方法可以让音乐在窗口切换到另一个Pyplay窗口时继续播放。 我使用而不是声音对象,如果可能有某

  • 我正在制作一个单位转换器,遇到了一个问题与JoptionPane.ShowMessageDialog代码是完整的,应该运行良好。 如果将两个转换单元都放到同一个单元,转换器将显示一个消息对话框。当消息窗口弹出,它说消息,然后一个确定按钮点击。当我单击Ok按钮时,它不会退出消息对话框。我从这个转换器的另一个更长的版本中为它复制了代码行,它可以很好地使用它。另外,如果你对如何做更好的数学有任何建议,请

  • 我正在使用这个库:https://github.com/jamesmontemagno/dibrateplugin 振动函数只获得参数。我该怎么办?