2012-06-06 18 views

回答

6

訣竅在於PLAFsetDefaultLookAndFeelDecorated(true)Specifying Window Decorations)。

E.G.

MetalWindows

import java.awt.BorderLayout; 
import javax.swing.*; 

public class FrameCloseButtonsByLookAndFeel { 

    FrameCloseButtonsByLookAndFeel() { 
     String[] names = { 
       UIManager.getSystemLookAndFeelClassName(), 
       UIManager.getCrossPlatformLookAndFeelClassName() 
     }; 
     for (String name : names) { 
      try { 
       UIManager.setLookAndFeel(name); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      // very important to get the window decorations. 
      JFrame.setDefaultLookAndFeelDecorated(true); 
      JFrame f = new JFrame(UIManager.getLookAndFeel().getName()); 
      f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

      JPanel gui = new JPanel(new BorderLayout()); 
      f.setContentPane(gui); 

      JTree tree = new JTree(); 
      tree.setVisibleRowCount(4); 
      gui.add(tree, BorderLayout.LINE_START); 

      gui.add(new JScrollPane(new JTextArea(3,15))); 

      JToolBar toolbar = new JToolBar(); 
      gui.add(toolbar, BorderLayout.PAGE_START); 
      for (int ii=1; ii<5; ii++) { 
       toolbar.add(new JButton("Button " + ii)); 
       if (ii%2==0) { 
        toolbar.addSeparator(); 
       } 
      } 

      f.pack(); 

      f.setLocationByPlatform(true); 
      f.setVisible(true); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new FrameCloseButtonsByLookAndFeel(); 
      } 
     }); 
    } 
} 
2

我知道可以做的唯一事情就是將WindowListener添加到JFrame並處理該偵聽器中的關閉事件。您幾乎可以做任何事情,例如顯示對話框,甚至取消關閉JFrame

請參閱本tutorial有關如何寫出這樣的偵聽器的更多細節。

至於減少:據我所知,目前還沒有辦法控制或改變這種行爲,它是完全由操作系統控制。

改變最小化/關閉/最大化按鈕方面的唯一方法是使用自定義的LookAndFeel和設置JFrame.setDefaultLookAndFeelDecorated (true);

+0

我不想改變事件處理程序..我想改變它的圖像,背景,應用程序的主框架佈局? – BDeveloper

+0

更多細節是否有類似模板的作品??! – BDeveloper

3

認爲你是一個的JWindow

http://docs.oracle.com/javase/7/docs/api/javax/swing/JWindow.html

後,您就可以創建自己的按鈕,其行爲可以最小化/關閉窗口

+0

這意味着所有自定義GUI是JWindows – BDeveloper

+0

沒有,自定義GUI可以是任何你想要,你覆蓋他們,但是你想實現它們並應用自己的樣子,如果你想使用一個JFrame覺得你想怎麼看 – pengibot

+0

你仍然可以使用 JFrame.setDefaultLookAndFeelDecorated(true); 遞歸地擺脫關閉/最小化按鈕等,雖然會多一點工作 – pengibot

0
  1. 設置jframe undecorated
  2. 爲每個按鈕設置一個jlabel
  3. 把自己的圖標爲每個Btn
  4. mouseListeners每個jlabel和 指定代碼例如,System.exit(0);/set ICONIFIED option
+0

這與LaF's無關。這是一種定製的方式!欲瞭解更多信息,請訪問YouTube上的Vertex數字藝術頻道 – IsmailVawda