LARPゲームのキャラクターマネージャーを設定しようとしています。ゲームでは、キャラクターは複数の役割(1または2)を持つことができます。2つのコンボボックスを使用してキャラクターを生成したいと思います。どちらも同じ名前の。から描画しenum
ますRole
。それ自体は簡単です。
JComboBox roleFirstComboBox = new JComboBox(IPlayerCharacter.Role.values());
JComboBox roleSeondComboBox = new JComboBox(IPlayerCharacter.Role.values());
私たちの役割が次のとおりであると言う場合を除いて:Coder, Programmer, SysAdmin, Nerdfighter
あなたはになることができますCoder/Coder
。したがって、2番目のボックスは、最初のボックスで選択されているものをすべて除外する必要があります。
私が持っていた考えの1つは、列挙型をある種のリストに渡す関数を作成し、1つのJComboBoxが選択されると、標準のコンテナーメソッドの1つを使用して、Box2にないすべての非同期ユニオン(?)を検索することでした。ボックス1。これは恐ろしいようです。ソリューションがJComboBoxModelを使用していることは知っていますが、これを列挙型に適応させる方法はわかりません。
この種の機能を取得するための最良の方法は何ですか?
編集:
これが私が現在使用しているコードです。それは私のペイン内にあるだけなので、もうコンテキストは必要ないと思います。必要に応じて、別の方法でお知らせください。
コンボボックスの作成
JComboBox roleFirstComboBox = null;
JComboBox roleSecondComboBox = null;
...
roleFirstComboBox = new JComboBox(IPlayerCharacter.Role.values());
roleSecondComboBox = new JComboBox(IPlayerCharacter.Role.values());
actionListenerの追加:
roleFirstComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
roleSecondComboBox.removeAll();
roleSecondComboBox.addItem(null);
for (Role role : IPlayerCharacter.Role.values()) {
if (role != roleFirstComboBox.getSelectedItem()) {
roleSecondComboBox.addItem(role);
}
}
}
});
roleFirstComboBox.setSelectedIndex(0);
groupLayoutに追加します。
.addComponent(roleFirstComboBox)
.addComponent(roleSecondComboBox))
最終的な外観とバグ:
これは役に立ちますか?