2012-09-11 27 views
1

我有一些問題射擊從JCheckBox的一個動作:JCheckBox的大小和擊發動作

JMenu topMenu = new JMenu("Top Menu"); 

MyAction action1 = new MyAction("Action1"); 
MyAction action2 = new MyAction("A2"); 

JCheckBox checkBox1 = new JCheckBox(action1); 
JCheckBox checkBox2 = new JCheckBox(action2); 

topMenu.add(checkBox1); 
topMenu.add(checkBox2); 

當鼠標懸停在頂部菜單,它展開並顯示標有「措施1」和「A2」的JCheckBoxes。 點擊複選框或文字切換複選框。

這部分有點難解釋:「A2」右側有一個空的區域 - 因爲「Action1」佔用更多空間,所以當懸停在topMenu上時顯示的子菜單將是「措施1」。 「A2」行的寬度相同,但只有複選框和「A2」觸發該行爲。

單擊「A2」文本的右側不會執行任何操作。 我該如何儘可能以最簡單的方式解決這個問題?

+3

爲更好地幫助越早,請包括[SSCCE(http://sscce.org) – user1329572

回答

5

不要將JCheckBoxes添加到菜單。請使用菜單變體:JCheckBoxMenuItemmenu tutorial將解釋如何使用這些。

例如,

JMenu topMenu = new JMenu("Top Menu"); 

MyAction action1 = new MyAction("Action1"); 
MyAction action2 = new MyAction("A2"); 

JCheckBoxMenuItem checkBox1 = new JCheckBoxMenuItem(action1); 
JCheckBoxMenuItem checkBox2 = new JCheckBoxMenuItem(action2); 

topMenu.add(checkBox1); 
topMenu.add(checkBox2); 
+1

+1,我只是想和它的作品就像一個魅力 –

+0

我其實試過這但有一個小問題。 JCheckBoxMenuItem中的複選框對你們來說顯示的方式更小? (並且在我們使用的java版本中存在一個錯誤,這使得我無法將JComponent的sizeVariant屬性設置爲「regular」。不幸的是,我無法更改java版本。) – Robert