2012-10-10 67 views

回答

2

而不必做是有史以來,我想我會走這條路:

  1. 的確設置的JFrame來未修飾
  2. 擴展JRootPane中添加一個附加字段標題欄的
  3. 創建一個標題欄組件持有標題,關閉按鈕等...
  4. 在該JRootPane上設置一個新的LayoutManager(查看JRootPane.RootLayout)並按照適當的順序佈置組件(首先是標題欄,然後是菜單欄下方,然後是下方內容窗格)
  5. 的那對你的JFrame擴展的rootPane

有可能更好的方法來設置實例。

0

我不太清楚你要如何自定義關閉按鈕,但也許這可以爲您指出正確的方向:How can I customize the title bar on JFrame?

編輯:下面是關於自定義自己的GUI更新工作鏈接到論壇和一個用戶發佈的代碼,他創建了一個簡單的GUI:Here

看起來你可以修改他的removeComponents方法並創建一個addComponents方法來滿足你的需求。

+1

是的,但那個問題的答案就會引用其他不再適用的鏈接。請發佈直接工作鏈接或刪除此帖子 –

0

根據上面的鏈接代碼: (編輯爲Java 8)

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
class Testing 
{ 
    public void buildGUI() throws UnsupportedLookAndFeelException 
{ 
JFrame.setDefaultLookAndFeelDecorated(true); 
JFrame f = new JFrame(); 
f.setResizable(false); 
removeMinMaxClose(f); 
JPanel p = new JPanel(new GridBagLayout()); 
JButton btn = new JButton("Exit"); 
p.add(btn,new GridBagConstraints()); 
f.getContentPane().add(p); 
f.setSize(400,300); 
f.setLocationRelativeTo(null); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.setVisible(true); 
btn.addActionListener((ActionEvent ae) -> { 
    System.exit(0); 
    }); 
} 
public void removeMinMaxClose(Component comp) 
{ 
    if (comp instanceof AbstractButton) 
{ 
    comp.getParent().remove(comp); 
} 
    if (comp instanceof Container) 
{ 
    Component[] comps = ((Container)comp).getComponents(); 
    for(int x = 0, y = comps.length; x < y; x++) 
    { 
     removeMinMaxClose(comps[x]); 
    } 
    } 
} 
    public static void main(String[] args) 
    { 
     SwingUtilities.invokeLater(() -> { 
     try { 
     new Testing().buildGUI(); 
    } catch (UnsupportedLookAndFeelException ex) { 
     Logger.getLogger(Testing.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    }); 
} 
} 

可以工作得很好,但如果用戶還希望設置A L什麼&˚F 如靈氣

相關問題