0

ここにいる素晴らしい人々のおかげで、私は何とか実用的なものを手に入れることができました. これまでのところ、提供された解決策のどれも完全に一致するものではありませんでした (そのため、私はそれらに投票していません) が、物事を新しい方法で見て、物事を前進させるのに役立ちました. というわけで、現在の問題点です。

最初にコード、次に説明

                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 をチェックする必要があります。それを行う最善の方法は何ですか?選択を解除すると、同じオブジェクトを削除するにはどうすればよいですか。

4

3 に答える 3

4

コードは Race クラスで次のようになります。

import java.util.ArrayList;
import java.util.List;

public class Race {

    private int raceID;

    private double purity;

    private int strMod;

    private int dexMod;

    private int conMod;

    private int wisMod;

    public int getRaceID() {
        return raceID;
    }

    public void setRaceID(int raceID) {
        this.raceID = raceID;
    }

    public double getPurity() {
        return purity;
    }

    public void setPurity(double d) {
        this.purity = d;
    }

    public int getStrMod() {
        return strMod;
    }

    public void setStrMod(int strMod) {
        this.strMod = strMod;
    }

    public int getDexMod() {
        return dexMod;
    }

    public void setDexMod(int dexMod) {
        this.dexMod = dexMod;
    }

    public int getConMod() {
        return conMod;
    }

    public void setConMod(int conMod) {
        this.conMod = conMod;
    }

    public int getWisMod() {
        return wisMod;
    }

    public void setWisMod(int wisMod) {
        this.wisMod = wisMod;
    }

    @Override
    public String toString() {
        return "Race [raceID=" + raceID + ", purity=" + purity + ", strMod="
                + strMod + ", dexMod=" + dexMod + ", conMod=" + conMod
                + ", wisMod=" + wisMod + "]";
    }

    public static void main(String args[]) {

        //create a list of race objects
        List<Race> raceCollection = new ArrayList<Race>();

        //create a race object
        Race race = new Race();
        race.setRaceID(1);
        race.setPurity(0.75);
        race.setStrMod(5);
        race.setDexMod(7);
        race.setConMod(-2);
        race.setWisMod(3);

        //add race object to collection
        raceCollection.add(race);

        //You can create and add multiple objects of race to the collection


        //Iterate your list and print the objects
        for(Race raceObj:raceCollection) {
            System.out.println(raceObj);
        }


    }

}
于 2013-06-02T05:20:16.307 に答える