Java 更改swt下拉列表元素顺序

Java 更改swt下拉列表元素顺序,java,swt,jface,Java,Swt,Jface,我是SWT新手,有一个项目要求我更改下拉列表中元素的顺序,该列表包含数据库中存储的数据,这些数据按顺序字母表排序,而我想更改下拉列表中元素的顺序,有人能告诉我下拉列表如何从数据库中获取数据列表以及如何更改顺序吗?多谢各位 下面是创建对象的代码,我想知道如何更改列表的顺序。多谢各位 public final Object[] getElements(final Object inputElement) { if (inputElement != null) { if (in

我是SWT新手,有一个项目要求我更改下拉列表中元素的顺序,该列表包含数据库中存储的数据,这些数据按顺序字母表排序,而我想更改下拉列表中元素的顺序,有人能告诉我下拉列表如何从数据库中获取数据列表以及如何更改顺序吗?多谢各位

下面是创建对象的代码,我想知道如何更改列表的顺序。多谢各位

public final Object[] getElements(final Object inputElement) {
    if (inputElement != null) {
        if (inputElement instanceof Test) {
            return getTest((EngdynoRequest) engDynoRequest).toArray();
        }
    }
    return null;
}

创建您自己的对象列表,然后您可以按照需要的任何方式对其进行排序,然后您可以使用已排序的元素创建下拉列表。

如果您已正确找到用于填充组合框的方法,您可以在此处对对象列表进行排序

return getTest((EngdynoRequest) engDynoRequest).toArray();
可以替换为

Object[] unsorted = getTest((EngdynoRequest) engDynoRequest).toArray();
return Arrays.sort(unsorted);
如果您想要自定义排序顺序,您可以通过

ComboViewer上有两种方法,您可能需要查看

StructuredViewer.java

public void setComparer(IElementComparer comparer) 

public void setComparator(ViewerComparator comparator)

public void setSorter(ViewerSorter sorter)

这可能更容易理解:

      // Re-sort
      String[] items = combo.getItems();
      Arrays.sort(items);
      combo.setItems(items);

请更准确地说明您正在使用的组件,如果可能,请使用控制器添加SSCCEI am,以提供将在组合框中显示的已排序列表。我想这个对象已经创建好了。他们创建了一个内容提供者来提供列表,并创建了labelProvider来显示组合框中的所有数据。还有一个名为Object[]getElements的函数,我不知道他们用它来生成列表,我把代码放在下面。我使用控制器来提供排序的列表,它将显示在一个组合框中。我想这个对象已经创建好了。他们创建了一个内容提供者来提供列表,并创建了labelProvider来显示组合框中的所有数据。还有一个名为Object[]getElements的函数,我知道他们用它来生成列表,我把代码放在下面。非常感谢,我会尝试你的方法