2011-10-19 31 views
0

我試圖構建一個特定的JMenu。 我想要一個JMenuItemJMenu功能,I.E.當我們點擊它時,該項目應該做一些事情(如打開對話框)。但JMenuItem也應該包含一個按鈕(或其他組件),當我們點擊它時,應該打開一個彈出窗口並帶有幾個選項。JMenuItem中的JButton

所以,到現在我有這樣的事情:

Desired UI

這就是我之前單擊箭頭。

我的問題是,當我按下按鈕(箭頭)時,子菜單實際上是打開的,但包含該按鈕的菜單項因爲失去焦點而關閉。

Broken UI

也就是說單擊箭頭按鈕後的結果。

有什麼辦法可以管理這個嗎?或者有更好的方法來實現這種行爲?

+1

所以你想要一個菜單​​項(菜單中的一行)有兩種不同的行爲 - 點擊文本時執行一些操作,點擊按鈕時打開一個子菜單?這對用戶不友好,最好使用menu組作爲子菜單,即添加新的(子)JMenu。 – Thomas

+0

我的問題,爲什麼你把JButton作爲JMenuItem放在JMenu中,你對基本實現不滿意 – mKorbel

+0

@Thomas:是的,這正是我想要的:當點擊文本時執行一個動作並點擊按鈕。 –

回答

0

實際上找不到解決這個特定問題的方法。 作爲一種解決方法,我只用一個簡單的按鈕,在選項1和選項2之間切換,而不是使用打開新彈出窗口的按鈕(箭頭)。 非常感謝您的幫助。

1

爲什麼不使用簡單嵌套的JMenuItem來代替? 類似this(從頂部的第一個屏幕)。

另一方面,您可以從類似的解決方案here中獲益。

2

我們可以引導你,如果我們確切地知道你想要實現什麼。如果你只是想選擇一個選項,你可以用JRadioButtonMenuItem更好的實現,所以你不需要實現一個按鈕,然後選擇一個選項。但這取決於你真正想要的。

+0

我想要的是Thomas提到的。我知道這不是用戶友好的,但在這個時候,我應該嘗試這樣做。 –

2

這不是菜單的目的。改爲使用ribbon,這些事情將很容易和自然。

+1

我同意,使用這樣的菜單會非常不直觀。絲帶似乎是更好的選擇。 – Thomas