2009-10-19 2 views
1

Я просматривал Java API, но мне не повезло в этом. После того, как вы инициируете JList, есть ли способ заменить или перезагрузить строку данных? Я также хотел сделать то же самое с JComboBox.переназначение данных JList & JComboBox

String[] data = {"one", "two", "three", "four"}; 
JList dataList = new JList(data); 

ответ

3

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

new AbstractListModel() { 
      public int getSize() { return listData.length; } 
      public Object getElementAt(int i) { return listData[i]; } 
} 

где listData будет ваш data набора. Вы можете сделать то же самое и передать его в dataList.setModel(). Вам может быть лучше всего подано, если это не просто прототип, создав собственную полномасштабную реализацию ListModel.

Для справки: JList tutorial from Sun.

JComboBox немного проще, так как класс DefaultComboBoxModel имеет конструктор, который принимает в качестве параметра массив Object. Чтобы заменить данные там, вы можете просто позвонить:

myComboBox.setModel(new DefaultComboBoxModel(data)); 
+0

спасибо akf. Это делает вещи немного яснее. Я искал, как заменить массив ... –

+0

Спасибо akf, он все работает! –

2

Данные списка хранятся в ListModel (Доступно через методы get/set Model). Вам просто нужно создать новый ListModel (ну, реализация ListModel) и передать его в JList с помощью метода setModel.

+0

Как это происходит, оно имеет строку сначала? –

Смежные вопросы