Как закрыть только JDialog и использовать JFrame - PullRequest
0 голосов
/ 16 января 2020

У меня есть JFrame и добавлено JPanel. Когда я нажимаю кнопку oa на панели, появляется JDialog (с именем choiceDialog). Когда я нажимаю на определенную кнопку в диалоговом окне, я просто хочу закрыть ее.

Я бы хотел , чтобы диалоговое окно было закрыто, а фрейм использовался . Возможно ли это?

Я пытался скрыть диалог с помощью 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);
    }

1 Ответ

0 голосов
/ 16 января 2020

Вы устанавливаете topFrame, чтобы быть предком окна кнопки, которая является самим диалогом. Вам нужно получить предок окна диалога вместо этого. Это предполагает, что при создании диалогового окна вы указали основной фрейм в качестве его родителя, а не с помощью конструктора JDialog без аргументов.

...