ここにいる素晴らしい人々のおかげで、私は何とか実用的なものを手に入れることができました. これまでのところ、提供された解決策のどれも完全に一致するものではありませんでした (そのため、私はそれらに投票していません) が、物事を新しい方法で見て、物事を前進させるのに役立ちました. というわけで、現在の問題点です。
最初にコード、次に説明
RaceButtons[RaceCounter] = new JToggleButton();
RaceButtons[RaceCounter].setIcon(RCiconSM);
RaceButtons[RaceCounter].setBorder(BorderFactory.createEmptyBorder());
RaceButtons[RaceCounter].setContentAreaFilled(false);
RaceButtons[RaceCounter].setActionCommand(temp_race.getRaceNameString(RaceCounter));
RaceButtons[RaceCounter].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Race race = new Race(1, 1, GenderList[PHYSICAL_SEX]);
race.setRaceID(race.getRaceIDFromString(ae.getActionCommand()));
//System.out.println(race.getraceID());
if (RaceButtons[race.getraceID()].isSelected()){
RaceButtons[race.getraceID()].setBorderPainted(true);
RaceButtons[race.getraceID()].setBorder(new LineBorder(Color.blue,2));
MyRaceArray.add(new Race(race.getraceID(), 1, GenderList[PHYSICAL_SEX]));
}else{
RaceButtons[race.getraceID()].setBorderPainted(false);
};
最初にトグルボタンの配列を作成し、それをクリックすると境界線が描画され、その情報を取得してレース用の配列に追加できますが、これには別の問題があり、ロジックを理解できません。つまり、すでに選択されているボタンがある場合、ボタンに別のインスタンスを追加します。つまり、既存のエントリを無視する必要はありませんが、同じ情報を持つ Race タイプの一致するオブジェクトの arry をチェックする必要があります。それを行う最善の方法は何ですか?選択を解除すると、同じオブジェクトを削除するにはどうすればよいですか。