-1

嘿,所以我在屏幕上显示了 20 个圈子,我希望用户只能选择两个圈子并能够取消选择圈子,但仍然最多只能选择 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);
            }

这段代码允许我一次选择一个圆圈,取消选择它但不选择两个圆圈

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 是两个圈子中较老的一个。

你也可以使用一个列表,这样你就可以做尽可能多的事情:

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 回答