ява свинг комбобокс - PullRequest
       1

ява свинг комбобокс

2 голосов
/ 11 августа 2011

У меня есть поле со списком и строковый массив, в котором хранятся все значения поля со списком.Я удаляю элементы из поля со списком, а затем хочу добавить значения из массива строк.Кажется, он не позволяет мне просто добавить массив строк.И я попытался перебрать строку, добавляя элементы один за другим, но не позволил мне сделать это (или, по крайней мере, так, как я написал, это не будет работать).

Может показаться глупым вопросом, ноЯ новичок в работе с Swing в Java.

Вот код, где я хочу "перезагрузить" элементы из поля со списком:

String str = JOptionPane.showInputDialog(null, "Enter Name: ", "", 1);
        if(str != null){
              JOptionPane.showMessageDialog(null, "New name added: " + str, "", 1);
              nameCreator.addName(strNames, str);
              strNames = NameLoader.getNames();
              nameList.removeAllItems();
              nameList.addItem(strNames);
        }

РЕДАКТИРОВАТЬ: Сделал небольшую опечатку и не сделалне понимаю, что было не так.Работает в настоящее время.Спасибо всем за помощь.

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Я бы посоветовал вам реализовать собственную модель ComboBoxModel:

public class YourComboBoxModel implements ComboBoxModel{

    @Override
    public Object getSelectedItem() {
        //return selected item Object;
    }

    @Override
    public void setSelectedItem(Object anItem) {
        //set selected item
    }

    @Override
    public Object getElementAt(int index) {
        //return the element based on the index
    }

    @Override
    public int getSize() {
        //return the size of your combo box list
    }

}

И собрать JComboBox, передав эту модель в качестве параметра:

ComboBoxModel yourModel = new YourComboBoxModel();
JComboBox yourComboBox = new JComboBox(yourModel); 

Использование настраиваемой ComboBoxModel является наиболее гибкимрешение.Он позволяет вам изменять структуру данных, содержащую ваши данные, и способ доступа к ним, изменяя только реализованную вами модель вместо другой не связанной части кода.

3 голосов
/ 11 августа 2011

Вы использовали метод addItem(Object anObject)?

Вы должны перебрать свой массив, используя этот метод:

String[] data = {a;b;c;d;e}
for(int i=0; i < data.length; i++){
  comboBox.addItem(data[i]);
}

Luca

1 голос
/ 11 августа 2011

Всякий раз, когда вам нужно работать с редактируемыми моделями для таких элементов графического интерфейса, всегда полезно использовать модель.Для JComboBox у вас есть простой в использовании DefaultComboBoxModel.

. Он работает легко:

DefaultComboBoxModel model = new DefaultComboBoxModel(new String[]{"Item1","Item2","Item3"});
JComboBox comboBox = new JComboBox(model);

, таким образом, у вас есть модель, прикрепленная к выпадающему списку, и онабудет отображать элементы из массива.Всякий раз, когда вам нужно изменить их, просто сделайте:

model.removeAllElements(); // if you need to empty it
model.addElement("New Item1");
model.addElement("New Item2");
model.addElement("New Item3");
model.fireContentsChanged();

, и у вас будут обновлены новые элементы в графическом интерфейсе.

Примечание: если вам нужно вместо этого управлять пользовательскими объектами, то строкиВы можете легко добавить их в JComboBox (как показано выше), вам просто нужно предоставить собственный метод public String toString(), который будет управлять строковым представлением.

В вашем примере я не получаюпочему вы читаете все элементы каждый раз, вы можете просто позвонить addItem с новой строкой, не удаляя все и не добавляя их обратно.

0 голосов
/ 26 июля 2013

лучший способ добавить что-то в ваше поле со списком, чтобы вы могли легко его изменить, - это сначала описать список массивов, если вы хотите быть динамичным, вы можете использовать текстовое поле, а затем в текстовом поле вы можетезапустите список массивов.

textField = new JTextField();
    textField.setBounds(131, 52, 86, 20);
    contentPane.add(textField);
    textField.setColumns(10);

, затем вы должны создать список массивов

ArrayList al=new ArrayList();

, затем вы должны сопоставить текст вашего текстового поля со строкой

String str=textfield.getText();

, затем добавьте его в ваш массив

al.add(str);

, затем добавьте все элементы в ваше поле со списком.

JComboBox comboBox = new JComboBox();
    comboBox.setBounds(112, 115, 145, 20);
    contentPane.add(comboBox);
            comboBox.addItem(al);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...