1

我在从 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 );

将鼠标悬停在 topMenu 上时,它会展开并显示标有“Action1”和“A2”的 JCheckBox。单击复选框或文本可切换复选框。

这部分有点难解释:“A2”右侧有一个区域是空的——因为“Action1”占用了更多的空间,那么悬停在topMenu上时显示的子菜单将是“Action1”的宽度。“A2”行的宽度相同,但只有复选框和“A2”触发动作。

单击“A2”文本的右侧不会执行任何操作。我该如何以最简单的方式解决这个问题?

4

1 回答 1

5

不要将 JCheckBoxes 添加到菜单中。而是使用菜单变体:JCheckBoxMenuItem菜单教程将解释如何使用这些。

例如,

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 );
于 2012-09-11T16:29:54.753 回答