1

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);

            }
4

3 に答える 3

8

単純に値を a に追加し、 API をList使用して並べ替えることができます。Collections

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);

配列を使用して同じことを達成できますが、Arrays.sortそれが簡単だった場合

于 2013-06-12T06:00:16.223 に答える
4

1 つの方法は、データを 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");
于 2013-06-12T06:04:02.537 に答える
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);
    }
}
于 2013-06-12T06:06:20.257 に答える