列表和GUI - 动态

时间:2015-07-14 07:05:34

标签: java user-interface swt

我对使用列表有疑问,

我在GUI中使用composits块编写了我的数据,但是现在当我处理其中一个块时,我需要在块下面创建我动态更改位置的块。如果我有4个块,并且我删除第二个块,我想让第3和第4块进入第2和第3位,因为当我删除第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));

1 个答案:

答案 0 :(得分:0)

如果您remove列表中的元素,则列表中稍后的元素将其位置减1。试试这个:

allSTUDENTNodes.remove(2);

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

请参阅文档中的说明:

  

E remove(int index)

     

删除此列表中指定位置的元素(可选   操作)。 向左移动任何后续元素(减去一个   来自他们的索引)。返回从中删除的元素   列表。

     

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

  

boolean remove(Object o)

     

从此列表中删除第一次出现的指定元素,   如果它存在(可选操作)。如果此列表不包含   元素,它没有变化。更正式地说,删除元素   最低的索引i使得(o == null?get(i)== null:   o.equals(get(i)))(如果存在这样的元素)。如果是这样返回true   list包含指定的元素(或等效地,如果此列表   因呼叫而改变了。)

     

指定人:       删除接口集合参数:       o - 要从此列表中删除的元素(如果存在)返回:       如果此列表包含指定的元素,则返回true抛出:       ClassCastException - 如果指定元素的类型与此列表不兼容(可选)       NullPointerException - 如果指定的元素为null且此列表不允许null元素(可选)       UnsupportedOperationException - 如果此列表不支持删除操作

第二个方差调用第一个方差,但首先搜索元素。因此,无论何时调用remove,它都会将后续元素向左移动,就像您想要的那样。 (http://docs.oracle.com/javase/7/docs/api/java/util/List.html