2012-10-10 40 views
1

我正在尋找是否有可能在當前JFrame的Winwdows系統菜單中添加一個項目(「關於」應用程序)。添加項目到Windows系統菜單沒有winapi

正如我在that answer中建議的那樣,我知道可以通過JNI/JNA和windows API調整菜單,其中GetSystemMenu(),但我正在尋找在普通的香草Java/Swing中是否有可能。

我已經找到了,告訴它應該可以在that forum thread

在此之前創建一個JFrame

JFrame.setDefaultLookAndFeelDecorated(真);然後,在向幀添加任何內容之前,迭代幀的組件 尋找JMenu。當找到時,添加您的'約'menuItem

剛剛測試,工作正常。

唉,整個sscce沒有提供,我沒有設法讓它在我的代碼中工作。在添加組件之前在創建窗口之後突然顯示,我看不到JMenu。無論是在第一級(JRootPane)還是在連續嵌入組件(JPanel,JLayeredPane)。

如果它的事項,我處理在WinXP和Win7的Java 6/7,創建窗口作爲new JFrame("some title")和我使用的是本機的外觀&感覺UIManager.getSystemLookAndFeelClassName()

回答

2

使用跨平臺外觀時,JMenu組件確實存在。組件的層次結構如下:

class Test 
    class javax.swing.JRootPane 
    class javax.swing.JPanel 
    class javax.swing.JLayeredPane 
     class javax.swing.JPanel 
     class javax.swing.plaf.metal.MetalTitlePane 
     class javax.swing.plaf.metal.MetalTitlePane$SystemMenuBar 
      class javax.swing.JMenu 
     class javax.swing.JButton 
     class javax.swing.JButton 
     class javax.swing.JButton 

不幸的是,當使用Windows外觀時,Java根本不知道標題欄。你可能會堅持使用JNA或不同的拉夫。