私のスイングベースのUIには、一連のJMenuとJMenuItemオブジェクトを含むJMenuBarがあります。メニュー項目オブジェクトの1つはJCheckBoxMenuItemです。コンテナからのコンポーネントの検索と取得
ユーザーはこのJCheckBoxMenuItemをクリックしてアプリケーションレベルの設定の状態を切り替えることができますが、ユーザーはアプリケーションの設定を変更するためのコマンドラインAPIにアクセスできます。このコマンドラインAPIの詳細は関係ありません。
私の質問は次のとおりです。ユーザーがコマンドラインAPIを使い、設定の状態(アプリケーションの開いているすべてのインスタンスに適用される静的なプロパティ/設定)を切り替えると、 "checked JCheckBoxMenuItemの "/ unchecked"プロパティを使用します。これを行うには、
- チェックボックスマニュアルを参照してください。
- JMenuコンテナ階層を横断して、チェックボックスメニューを検索します。
今後、これらのチェックボックスメニューが増えれば、それぞれに参照する必要がありますので、方法1を使用したくありません。私がする必要があるため
方法2は面倒なようだ:
Component[] childComponents = menu.getComponents();
for(Component c:childComponents)
{
if(c.getName().equals("nameOfTheCheckBoxMenuItem"))
{
componentFound = c;
}
}
は、コンポーネント階層でコンポーネントを見つけるために、より良い/より効率的な方法はありますか? PropertyChangeListenerを使って、一般的にこの問題を解決するより良い方法がありますか(私の理解では「豆」のみで動作していますが)、アプリケーションのプロパティの値が変更されたときにjcheckboxmenuitemの状態を変更します。 。
この文字列のnameOfTheCheckBoxMenuItemの値がこのコードのものにどのようになっているのか、その部分を説明するだけですか?私が考えていることが事実なら、私は何をすべきか説明できると思うかもしれません。 –
"setName"メソッドを使用します。例: JCheckBoxMenuItem aCheckBoxItem = new JCheckBoxMenuItem(); aCheckBoxMenuItem.setName( "togglePropertyItem"); 今、JCheckBoxMenuItemを参照することなく効率的にJCheckBoxMenuItemを見つける方法があります。 – eternaln00b