2011-06-20 70 views
3

我試圖讓用戶更改Java中的窗口的標題,而無需向窗口本身添加組件。我實際上是用JInternalFrame來嘗試這個,但數字解決方案應該類似於JFrame。我只是想在右鍵單擊窗口標題欄時彈出的上下文菜單中添加一個額外的菜單項。例如,設置如下標題自定義Java窗口標題欄菜單

enter image description here

這個例子是在Windows XP,但也許有一種方法來獲取窗口上下文菜單OS獨立也許類似SystemTray.getSystemTray()(但各個窗口申請內)。從這我可以提供我自己的ActionListener彈出一個對話框讓用戶輸入一個新的標題。

這是一個比我猜測的要大得多的任務嗎?有沒有人有以前使用過的解決方案?

+1

爲本地OS這個funcionaliality缺憾,你必須overode WindowsListener,改變DefalutCloseOperation.NOTHING_ON_CLOSE以及使用自定義JMenu的和JMenuItes創建的JDialog,把這個的JDialog的左上方窗口容器窗口」關閉事件 – mKorbel

回答

2

簡答:我不認爲這很容易。如果可能,我不是100%確定的。

首先,JFrame和JInternalFrame實際上是完全不同的。 JFrame是頂級組件,其標題欄等通常由操作系統提供。 JInternalFrame的全部內容(包括標題欄)均由Swing LAF提供。

對於JInternalFrame,上下文菜單由LAF提供,而不是JInternalFrame本身。你將不得不用UIComponent做些什麼來改變上下文菜單。我認爲你可能不得不提供一個自定義UI組件,以便做到這一點,這很醜陋,通常會穿過不同的LAF或作品,但看起來很糟糕。見BasicInternalFrameTitlePanecreateSystemMenu方法。

+0

+1這基本上是什麼我的意思是「挖得太深」。謝謝闡述:) – vehk

1

如果沒有深入Swing的內部UI系統,我不認爲這是可能的,我甚至不會考慮這樣做。爲什麼不使用JInternalFrame的內置JMenuBar

myInternalFrame.setJMenuBar(myMenuBar);