シンプルなSwingアプリを書いています。以下のチェックボックスを追加してみました。actionHandler loadPickersを追加すると、chckbxNewCheckBoxの右側の横にある場所からFooという名前が消えました。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) {
}
}