我正在编写一个简单的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) {
}
}
答案 0 :(得分:5)
正如AbstractButton.setAction的JavaDoc中所解释的那样:
设置操作会立即更改Swing Components Supporting Action中描述的所有属性。随后,随着Action的属性更改,按钮的属性会自动更新。
因此,通过设置操作可以影响以下所有属性: