Что такое AWT эквивалент JFrame.setDefaultCloseOperation? - PullRequest
3 голосов
/ 06 августа 2009

Мы используем setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) метод JFrame.

Я хочу поддерживать нативный внешний вид, и поэтому я должен использовать AWT вместо Swing. Так что же такое метод AWT, эквивалентный setDefaultCloseOperation?

Правильно ли я считаю, что для поддержки нативного внешнего вида мы должны использовать AWT вместо Swing?

Ответы [ 3 ]

6 голосов
/ 06 августа 2009

В AWT нет эквивалента одного метода, но вы можете создать его самостоятельно.

myFrame.addWindowListener(
  new WindowAdapter(){
    public void windowClosed(WindowEvent e) { System.exit(0); }
  }
);

Вы можете приблизиться к естественной верности без использования AWT. Вместо этого настройте внешний вид по умолчанию с помощью UIManager.

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel());

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

1 голос
/ 19 октября 2014

Java предоставляет интерфейс как в awt, так и в swing для обработки оконных событий, именуя слушатель окна Мы используем метод setDefaultCloseOperation () просто для того, чтобы избежать длинного кодирования на свинге Слушатель окна переопределяет 7 методов Именование

  public void windowOpened(WindowEvent e)        {   }
  public void windowClosed(WindowEvent e)         {   }
  public void windowActivated(WindowEvent e)     {   }
  public void windowDeactivated(WindowEvent e) {   }
  public void windowIconified(WindowEvent e)      {   }
  public void windowDeiconified(WindowEvent e)   {   }
 public void windowClosing(WindowEvent e)

{}

Мы должны поместить наш код выхода в последний метод, так как он имеет дело с закрытием окна

В качестве альтернативы мы можем использовать классы адаптера. Использование класса адаптера имеет преимущество перед слушателем, что позволяет нам переопределять только один или два абстрактных метода, которые нам требуются, а не обязательно все абстрактные методы слушателя. Но проблема с адаптерами заключается в том, что они разработаны как абстрактные классы, и поэтому мы не можем расширять наш класс, поскольку класс уже расширяет Frame (Java не поддерживает множественное наследование).

Например, используйте следующий код в вашей программе

Frame f = new Frame();
f.addWindowListener(new WindowListener ()
{
    public void windowClosing(WindowEvent we)
    {
        System.exit(0);
    }
});
0 голосов
/ 06 августа 2009

Кроме настройки L'n'F в коде, можно использовать параметр java / javaw -Dswing.defaultlaf.

Например, под Windows можно указать -Dswing.defaultlaf = com.sun.java.swing.plaf.windows.WindowsLookAndFeel

Более подробную информацию можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...