Как отключить X в диалоговых окнах? - PullRequest
1 голос
/ 15 марта 2011

Есть ли способ отключить все X в диалоговых окнах?

Я могу сделать это на одном:

JOptionPane pane = new JOptionPane("Are you hungry?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);

JDialog dialog = pane.createDialog("Title"); 
dialog.addWindowListener(new WindowAdapter() {    
public void windowClosing(WindowEvent evt) {
    } }); 
dialog.setContentPane(pane);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 
dialog.pack();

Но проблема в том, что я должен применить это к другим 20-40 диалоговым окнам, которые потребуют много времени ..

Поэтому мне было интересно, как вы можете сделать одну строку кода, чтобы увеличить шрифты во всех диалоговых окнах (показанных ниже), есть ли способ отключить функцию X.

UIManager.put ( "OptionPane.messageFont", новый FontUIResource (новый Font ( "Arial", Font.BOLD, 30)));

Ответы [ 4 ]

1 голос
/ 07 ноября 2015

Вам нужно добавить windowListener, но также установить закрытие по умолчанию для диалогового окна.

    setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
    this.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            if (someConditionIsMet) {
                dispose();
            }
        }
    });
1 голос
/ 15 марта 2011

JDialog метод setDefaultCloseOperation работает так же, как в JFrame:

http://download.oracle.com/javase/6/docs/api/javax/swing/JDialog.html#setDefaultCloseOperation(int)

Ни один из них не сделает это для всех фреймов, он просто сделает это для экземпляра, на котором он установлен,Если вы хотите применить ко всем своим диалогам, вам нужно выполнить одно из следующих действий:

  • Вызывать это каждый раз, когда вы создаете диалоговое окно.
  • Расширить JDialog и установить его по умолчаниюзатем используйте этот новый класс.
  • Создайте метод фабрики, который создаст диалог с этим набором по умолчанию.Затем вызывайте этот метод всякий раз, когда вам нужно новое диалоговое окно.
0 голосов
/ 06 декабря 2013

Почему бы просто не создать пользовательский класс, расширяющий JDialog, устанавливающий желаемое поведение закрытия в конструкторе?

class NoCLoseDialog extends JDialog {
  NoCloseDialog(){
    addWindowListener(new WindowAdaptor(){
      // ... Close behavior ...
    });
  }
}

Crtl + F Заменить JDialog на NoCloseDialog ...

0 голосов
/ 15 марта 2011

Вместо того, чтобы отключить элемент управления, вы должны удалить его.Пользователи не должны видеть кнопку «X», а затем не вести себя так, как ожидают.

См .:

...