java - 如何仅关闭 JDialog 并使 JFrame 仍然可用

标签 java swing jframe jpanel jdialog

我有一个 JFrame 并添加了一个 JPanel。当我单击面板中的按钮时,会出现一个 JDialog (名为 选择对话框)出现。当我单击对话框上的特定按钮时,我只想将其关闭。

我希望关闭对话框并且框架可用。可能吗?

我尝试使用 setVisible(false) 隐藏对话框,但它隐藏了对话框和框架。然后我尝试执行 choiceDialog.dispose() 但我再次丢失了这两个元素。那时我找到了一种方法来将框架再次设置为可见但不可用。

有人可以帮我吗?我真的不知道该怎么办。

相关代码如下:

if (dimField.isEnabled()){
    String dimFieldText = dimField.getText();
    if (dimFieldText.equals("") || !isNumeric(dimFieldText)){ //if there's an error when filling the options in the JDialog             
        errorLabel = new JLabel(noDim, SwingConstants.CENTER);
        /*other stuff
             ...
         */
    }else{ //if it's all ok: I want the JDialog close but the JFrame to be usable                   
        JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this); //to catch the JFrame istance
        choiceDialog.dispose();
        topFrame.setVisible(true); //to make the JFrame visible again
        //choiceDialog.setVisible(false);
    }

最佳答案

您将 topFrame 设置为按钮(即对话框本身)的窗口祖先。您需要获取对话框的窗口祖先。假设当您创建对话框时,您指定主框架作为其父级,而不是使用无参数 JDialog 构造函数。

关于java - 如何仅关闭 JDialog 并使 JFrame 仍然可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59759492/

相关文章:

java - Spring 数据 REST : How to retrieve many items using list of Ids in one single call?

java - JFrame 在带有图片的标签中绘制文本

java - 为什么当我按下退出键时框架没有关闭?

java - JFrame随机渲染图形

java - 如何缩短资源包调用?复合组件?

Java 集合 ArrayList、LinkedList 抛出异常

Java - 突出显示两个字符之间的文本 - JTextPane

java swing jtable - 显示每行的行索引

java - 如何正确定位 JButton 和调整 JTextField 的大小?

java - 如何使用JPanel和Jframe在相对(X,Y)上进行鼠标事件