Как предотвратить автоматическое закрытие диалогового окна JOptionPane YES_NO_OPTION? - PullRequest
0 голосов
/ 10 мая 2018

Я создал JOptionPane, и он имеет только две кнопки YES_NO_OPTON.После появления JOptionPane.showConfirmDialog, если пользователь нажимает кнопку «YES», диалоговое окно обычно исчезает.Но я хочу предотвратить его закрытие, если пользователь нажимает кнопку YES.Он исчезнет только тогда, когда пользователь нажмет кнопку NO.

int dialogResult = JOptionPane.showConfirmDialog (null, "Press YES to continue?", "Click a Button", JOptionPane.YES_NO_OPTION);

 if(dialogResult == JOptionPane.YES_OPTION)
    {
         CDUtils.open("F:\\");// Calls a method to do some work
        // Prevent Dialog Box from closing
    }
    else(dialogResult == JOptionPane.NO_OPTION)
        {
             System.exit(0);
            // Close the Dialog Box 
        }

1 Ответ

0 голосов
/ 11 мая 2018

JOptionPane не поддерживает это. Генерируемые им кнопки всегда имеют BasicOptionPaneUI$ButtonActionListener в качестве единственного слушателя, который просто устанавливает «значение», возвращаемое панелью, что также вызывает изменение свойства, которое закрывает диалоговое окно.

Вместо этого вы можете создать свой собственный JButton и передать его (или JPanel, содержащий его) в JOptionPane в качестве параметра "message". Хотя это будет выше ряда кнопок JOptionPane.

...