我希望在我的vaadin组合框中以升序方式显示已排序的项目列表。我正在添加如下项目。
for (long i = 1; i < 11; i++) {
Long item = new Long(i);
comboBoxPriority.addItem(item);
}
我也尝试过以下方式。我仍然按降序获得一个项目列表。
for (long i = 10; i > 0; i--) {
Long item = new Long(i);
comboBoxPriority.addItem(item);
}
答案 0 :(得分:8)
您只需将值添加到List
,然后使用Collections
API对其进行排序。
List<Long> values = new ArrayList<Long>(10);
for (long i = 10; i > 0; i--) {
values.add(i);
}
Collections.sort(values);
DefaultComboBoxModel model = new DefaultComboBoxModel(values.toArray(new Long[values.size()]));
comboBoxPriority.setModel(model);
如果是eaiser
,您可以使用数组和Arrays.sort
来实现相同的目标
答案 1 :(得分:4)
一种方法是将数据放入IndexedContainer,对数据进行排序,然后将数据添加到ComboBox。请参阅vaadin-forum中的Charles Anthony的例子。
以下是他的例子:
/* Creating a container, with a property of "name". Item Id is a number, here. Can be anything (unique).
* Alternatively, you could use the IndexedContainer to generate it's own ItemId :
* cityContainer.getItem(cityContainer.addItem()).getItemProperty("name").setValue("New York");
*/
IndexedContainer cityContainer = new IndexedContainer();
cityContainer.addContainerProperty("name", String.class, null);
cityContainer.addItem(1).getItemProperty("name").setValue("New York");
cityContainer.addItem(2).getItemProperty("name").setValue("Turku");
cityContainer.addItem(3).getItemProperty("name").setValue("Paris");
cityContainer.addItem(4).getItemProperty("name").setValue("Zanzibar");
cityContainer.addItem(5).getItemProperty("name").setValue("Turin");
cityContainer.addItem(6).getItemProperty("name").setValue("London");
cityContainer.getItem(cityContainer.addItem()).getItemProperty("name").setValue("New York");
/* Lets sort the container on ascending name*/
cityContainer.sort(new Object[]{"name"}, new boolean[]{true});
/* Here's a comboBox that uses that container, where we are using the "name" property as the item caption */
ComboBox comboBox = new ComboBox("City", cityContainer);
comboBox.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY);
comboBox.setItemCaptionPropertyId("name");
答案 2 :(得分:2)
似乎在这里工作得很好:
import java.awt.*;
import javax.swing.*;
class ReversCombo {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
JPanel gui = new JPanel(new GridLayout(1,0,5,5));
JComboBox comboBoxPriority = new JComboBox();
for (long i = 1; i < 11; i++) {
Long item = new Long(i);
comboBoxPriority.addItem(item);
}
JComboBox comboBoxPriority2 = new JComboBox();
for (long i = 10; i > 0; i--) {
Long item = new Long(i);
comboBoxPriority2.addItem(item);
}
gui.add(comboBoxPriority);
gui.add(comboBoxPriority2);
JOptionPane.showMessageDialog(null, gui);
}
};
SwingUtilities.invokeLater(r);
}
}