2009-08-06 80 views
3

我們正在使用JFrame的setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法。與JFrame.setDefaultCloseOperation等效的AWT是什麼?

我想支持本地外觀和感覺,因此我必須使用AWT而不是Swing。那麼等於setDefaultCloseOperation的AWT方法是什麼?

我正確地認爲,爲了支持本機的外觀和感覺,我們應該使用AWT而不是Swing?

+0

搖擺絕對支持本機的外觀和感覺 – ChssPly76 2009-08-06 04:36:25

+0

@ ChessPly76:但我認爲我們只需要創建一個外觀和感覺可固定於所有平臺! – Johanna 2009-08-06 04:38:19

+0

如果通過「固定」來表示「對於所有平臺都是一樣的」,則可以使用Swing來實現這一點 - 該l&f被稱爲「金屬」。如果你的意思是「每個平臺的原生」,你也可以這樣做。我已經鏈接到Sun的教程,在我的答案中有一個演示。 – ChssPly76 2009-08-06 04:51:58

回答

6

在AWT中沒有一種方法等價,但您可以自己構建它。

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

您可以在不使用AWT的情況下接近本地保真度。相反,請使用UIManager設置默認外觀&感受。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel()); 

您必須顯示任何UI之前做到這一點,或者事情可能會變得有點毛。

0

或者在代碼中設置L'n'F,可以使用java/javaw參數-Dswing.defaultlaf。

例如,在Windows下一個可以指定 -Dswing.defaultlaf = com.sun.java.swing.plaf.windows.WindowsLookAndFeel

更多信息,可以發現here

1

的Java提供了AWT的接口,以及在搖擺處理窗口事件命名的窗口偵聽 我們請使用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) 

{}

我們必須把我們的退出代碼中的最後一個方法,因爲它與窗口關閉

或者W¯¯交易e可以使用適配器類。 使用適配器類比偵聽器更有優勢,它允許我們只覆蓋一個或兩個我們需要的抽象方法,而不強制偵聽器的所有抽象方法。但適配器的問題是它們被設計成抽象類,因此我們不能擴展到我們的類,因爲類已經擴展了Frame(Java不支持多繼承)。

例如使用下列程序中的代碼

Frame f = new Frame(); 
f.addWindowListener(new WindowListener() 
{ 
    public void windowClosing(WindowEvent we) 
    { 
     System.exit(0); 
    } 
}); 
+0

你應該添加更多的上下文,並描述爲什麼這可能會解決問題 – 2014-10-19 12:08:16

+0

我沒有得到你......你想說什麼?:) – Priyank 2014-10-19 13:12:28

+0

你應該給答案提供更多的上下文。不要只顯示一個解決方案。提供信息,說明爲什麼以及如何解決問題,並解釋如何使用該片段,否則很有可能人們不會理解您**正在說些什麼 – 2014-10-19 16:12:46