【问题标题】:JCheckBox sizing & firing actionsJCheckBox 大小调整和触发动作
【发布时间】:2012-09-11 15:58:33
【问题描述】:

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

当鼠标悬停在顶部菜单上时,它会展开并显示标记为“Action1”和“A2”的 JCheckBox。 单击复选框或文本可切换复选框。

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

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

【问题讨论】:

  • 为了尽快获得更好的帮助,请附上sscce

标签: java swing action jmenu jmenuitem


【解决方案1】:

不要将 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 );

【讨论】:

  • 我实际上已经尝试过了,但遇到了一个小问题。 JCheckBoxMenuItem 中的复选框对你们来说显示得更小了吗? (我们正在使用的 java 版本中存在一个错误,它阻止我将 JComponent 的 sizeVariant 属性设置为“常规”。不幸的是,我无法更改 java 版本。)
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 2019-04-09
相关资源
最近更新 更多