添加操作后,在Swbox的Checkbox组件上缺少文本

时间:2012-07-16 12:28:58

标签: java swing jbutton jcheckbox windowbuilder

我正在编写一个简单的Swing应用程序。我尝试添加如下所示的复选框。一旦我添加了actionHandler loadPickers ,名称 Foo 就会从 chckbxNewCheckBox 右侧的位置消失。我尝试添加对 setHideActionText()的调用,但现在没有显示。

JCheckBox chckbxNewCheckBox = new JCheckBox("Foo");
chckbxNewCheckBox.setToolTipText("");
chckbxNewCheckBox.setName("");
chckbxNewCheckBox.setHideActionText(true);
chckbxNewCheckBox.setAction(loadPickers);
mainPanel.add(chckbxNewCheckBox, "flowy,cell 0 1");

如果我将其改为此功能正常。我看到文字“Foo”。

JCheckBox chckbxNewCheckBox = new JCheckBox("Foo");
chckbxNewCheckBox.setToolTipText("");
chckbxNewCheckBox.setName("");
chckbxNewCheckBox.setHideActionText(true);
chckbxNewCheckBox.setAction(loadPickers);
chckbxNewCheckBox.setText("Foo"); //THIS DOES NOT WORK IF IT COMES BEFORE SET ACTION
mainPanel.add(chckbxNewCheckBox, "flowy,cell 0 1");

为了完整起见,我已将此行动纳入此处。为什么这样工作?我在这里错过了什么吗?目前我正在使用Eclipse的WindowBuilder插件和Mig布局系统(我非常喜欢)。不幸的是,我还没弄清楚是否有办法让WindowBuilder使用.setText()方法而不是使用构造函数。对于我做错的任何帮助,对此行为存在的原因有任何见解,或者WindowBuilder的一个好的解决方法都会很棒。

private class LoadPickers extends AbstractAction {
    public LoadPickers() {
        //putValue(NAME, "SwingAction_2");
        putValue(SHORT_DESCRIPTION, "Some short description");
    }
    public void actionPerformed(ActionEvent e) {
    }
}

1 个答案:

答案 0 :(得分:5)

正如AbstractButton.setAction的JavaDoc中所解释的那样:

  

设置操作会立即更改Swing Components Supporting Action中描述的所有属性。随后,随着Action的属性更改,按钮的属性会自动更新。

因此,通过设置操作可以影响以下所有属性:

  • 启用
  • 的ToolTipText
  • actionCommand
  • 助记符
  • 文本
  • displayedMnemonicIndex
  • 图标(JCheckBox的NA)
  • 加速器(JCheckBox的NA)
  • 选择