public void setSelect(Point p, boolean b) { // 如果是拖动,则要优化一下,以提高效率 if (b) { // 表示是否能返回,不用比较完所有的标签,能返回的标志就是把上一个标签和 // 将要显示的标签找到了就可以了 boolean findPrevious = false, findNext = false; for (MyLabel m : list) { if (m.contains(p)) { findNext = true; if (m.getIsSelected()) { findPrevious = true; } else { m.setSelected(true, b); } } else if (m.getIsSelected()) { findPrevious = true; m.setSelected(false, b); } if (findPrevious && findNext) { return; } } } else { MyLabel temp = null; for (MyLabel m : list) { if (m.contains(p)) { temp = m; } else if (m.getIsSelected()) { m.setSelected(false, b); } } if (temp != null) { temp.setSelected(true, b); } } }