我正在编写一个简单的 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");
为了完整起见,我在此处包含了该操作。为什么它会这样工作?我在这里错过了什么吗?目前,我正在使用带有 Mig 布局系统(我非常喜欢)的 Eclipse 的 WindowBuilder 插件。不幸的是,我还没有弄清楚是否有办法让 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) {
}
}