Нужно ли менять код Java Swing, сгенерированный Eclipse VE, на правильную программу? - PullRequest
1 голос
/ 25 августа 2010

Используя визуальный редактор в Eclipse, я запустил Swing UI, содержащий таблицу (JTable) с 2 столбцами (JTableColumn).Добавление данных в таблицу следующим образом:

final DefaultTableModel model = (DefaultTableModel) this.jTable.getModel();
model.addRow(new Object[] {"Column 1", "Column 2"});

сгенерировало исключение ArrayIndexOutOfBoundsException.Я решил это, установив число столбцов модели, поддерживающей таблицу:

model.setColumnCount(this.jTable.getColumnCount());

Но после этого вызова заголовки столбцов таблицы, которую я определил с помощью редактора пользовательского интерфейса, изменились на «A» и«В».Теперь мне интересно, должен ли я продолжить и исправить сгенерированный код, как я сделал, или есть лучший способ для создания пользовательского интерфейса с помощью Visual Editor?

В завершение это сгенерированный код для определения таблицы и столбцов:

private JTable getJTable() {
    if (this.jTableSongs == null) {
        final TableColumn tableColumn1 = new TableColumn();
        tableColumn1.setHeaderValue("Header 1");
        final TableColumn tableColumn2 = new TableColumn();
        tableColumn2.setHeaderValue("Header 2");
        this.jTableSongs = new JTable();
        this.jTableSongs.addColumn(tableColumn1);
        this.jTableSongs.addColumn(tableColumn2);
    }
    return this.jTable;
}

Ответы [ 2 ]

1 голос
/ 25 августа 2010

или есть лучший способ для создания пользовательских интерфейсов с визуальным редактором?

Проблема с использованием генераторов кода заключается в том, что вы тратите больше времени на изучение IDE, а не на изучение Java. Лучшим подходом является использование IDE для отладки и т. Д. И самостоятельное создание графического интерфейса пользователя, чтобы вы могли полностью контролировать его и перемещать код из одной IDE в другую.

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

this.jTable = new JTable(); 
this.jTableSongs.addColumn(tableColumn1); 
this.jTableSongs.addColumn(tableColumn2); 

Создается переменная jTable (и возвращается из метода), но столбцы добавляются в jTableSongs. Так что мне кажется, что jTable имеет 0 столбцов, которые могут вызвать исключение.

1 голос
/ 25 августа 2010

Я не знаю об этой конкретной проблеме (столбцы таблицы), но в прошлом у меня были подобные проблемы с VE.

Если у вас нет количества столбцов в представлении свойств, вы должны указать его программно, редактируя код, но VE не удалит код, добавленный вручную.

...