-1

画面に 20 個のサークルが表示されています。ユーザーが 2 つのサークルのみを選択し、サークルの選択を解除できるようにしたいのですが、最大 2 つのサークルしか選択できません。一度に2つの円しか選択できないが、選択を解除できない方法と、1つの円しか許可されていないときに選択を解除する方法を知っています。今は混乱しています。

このコードでは 2 つの円しか選択できませんが、円の選択を解除することはできません

Figur vald1 = null, vald2 = null;

Figur fig = (Figur)mev.getSource();

if (vald1 == null){
            vald1 = fig;
            vald1.setVald(true);
            }
            else if (vald2 == null && fig1 != vald1){
            vald2 = fig;
            vald2.setVald(true);
            }

このコードにより、一度に1つの円を選択して選択を解除できますが、2つの円を選択することはできません

if (vald1 != null)
        vald1.setVald(false);

        if (vald1 == fig)
        vald1 = null;
        else{
        fig.setVald(true);
        fig.requestFocusInWindow();
        vald1 = fig;
4

1 に答える 1

2

このような:

Figur vald1 = null, vald2 = null;

Figur fig = (Figur)mev.getSource();

vald1 = vald2;
vald2 = fig;

ここで、vald1 と vald2 は最近の 2 つの円を保持し、vald1 は 2 つのうち古い方です。

リストを使用して、好きなだけ実行することもできます。

List<Figur> selected = new ArrayList<Figur>();
final static NUM_TO_KEEP = 2;

Figur fig = (Figur)mev.getSource();

selected.push(fig);

// This trims the list to only maintain the NUM_TO_KEEP elements.
while(selected.length() > NUM_TO_KEEP) {
    selected.remove(NUM_TO_KEEP);
}
于 2012-04-13T14:24:42.130 に答える