列表和GUI -动态



我对使用列表有疑问,

我写我的数据与复合块在GUI中,但现在,当我处置一个块,我需要使该块是下面的块,我处置动态改变位置..现在,如果我有4块,我要删除第二个块,我想让block 3和4来的位置2和3,因为当我删除block 2在他的位置是空的空间..

    TabItem tbtmStudent = new TabItem(tabFolder_1, SWT.NONE);
tbtmStudent.setText("Student");
ScrolledComposite scrolledComposite_1 = new ScrolledComposite(tabFolder_1, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
scrolledComposite_1.addMouseWheelListener(new MouseWheelListener() {
    public void mouseScrolled(MouseEvent e) {
        scrolledComposite.setFocus();
    }   
});
tbtmStudent.setControl(scrolledComposite_1);
scrolledComposite_1.setExpandHorizontal(true);
scrolledComposite_1.setExpandVertical(true);

List<STUDENT> allSTUDENTNodes = currentData.getStudentNodes();
Composite studentChild = new Composite(scrolledComposite_1, SWT.NONE);
studentChild.setLayout(new GridLayout());
for(STUDENT studentNode: allSTUDENTNodes){
    new STUDENTNode(studentChild, SWT.NONE, studentNode);
    Composite achivementsChild = new Composite(scrolledComposite_1, SWT.DEFAULT);
    achivementsChild.setLayout(new GridLayout());
    for(Achivements achivementsNode: studentNode.getAchivements()){
        new AchivementsNode(mscbcChild, SWT.NONE, achivementsNode);
    }
}
scrolledComposite_1.setContent(studentChild);
scrolledComposite_1.setMinSize(studentChild.computeSize(SWT.DEFAULT, SWT.DEFAULT));

如果您从列表中remove一个元素,那么列表中后面的元素的位置将减少一个。试试这样:

allSTUDENTNodes.remove(2);

,然后分别用allSTUDENTNodes.get(2)allSTUDENTNodes.get(3)检查第二个和第三个元素。

见文档中的描述:

E remove(int index)

删除列表中指定位置的元素(可选)操作)。将所有后续元素向左移动(减1)从它们的指数来看)。返回从对象中删除的元素列表。

参数:index—要删除的元素的索引返回:先前在指定位置的元素抛出:UnsupportedOperationException -如果此列表不支持删除操作IndexOutOfBoundsException -如果索引超出范围(index <0 || index>= size()

boolean remove(对象0)

从列表中删除第一个出现的指定元素,如果存在(可选操作)。如果此列表不包含元素是不变的。更正式地说,删除元素with使(0 ==null)的最低索引I ?得到(i) = =零:O.equals (get(i))(如果存在这样的元素)。如果以下情况返回true列表包含指定的元素(如果此列表由于调用而更改)。

规定:在接口中移除从列表中删除的元素,如果存在返回:如果此列表包含指定的元素,则为true。ClassCastException -如果指定元素的类型与此列表不兼容(可选)NullPointerException—如果指定的元素为空,并且此列表不允许为空元素(可选)UnsupportedOperationException—如果此列表不支持删除操作

第二个变量调用第一个变量,但首先搜索元素。因此,无论何时调用remove,它都会将后续元素向左移动,正如您所希望的那样。(http://docs.oracle.com/javase/7/docs/api/java/util/List.html)

最新更新