Я пытаюсь справиться с разработкой Java ME для Pocket PC. Я использую эмулятор NSIcom CrE-ME и создаю свое приложение с помощью NetBeans 6.5.
Приложение основано на трех вкладках, каждая из которых имеет компоненты Swing. Содержимое компонентов Swing обновляется в различных точках приложения. Эти компоненты включают JTextArea, JTextFields и, что наиболее важно, JTable в JScrollPane.
JTable вызывает проблемы. Если я инициализирую его через Матисс с некоторыми примерами данных, он появится. Но если я попытаюсь установить ссылку на JTable во время выполнения в методе populateFields () ниже, ничего не появится. Обратите внимание, что это просто пример данных таблицы из учебника Sun, даже не мой пользовательский TableModel.
Что я делаю не так? Есть какой-то очевидный метод обновления, который мне нужно вызвать, или какая-то другая явная ошибка / концепция, которую я пропустил? Я испробовал практически все возможные методы, с которыми мне приходилось сталкиваться, и я думал, что это как-то связано.
Метод populateFields () вызывается в разное время во время выполнения программы.
public void populateFields()
{
String[] columnNames = {"First Name", "Last Name","Sport", "# of Years", "Vegetarian"};
Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)},
{"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath", "Knitting", new Integer(2), new Boolean(false)},
{"Sharon", "Zakhour", "Speed reading", new Integer(20), new Boolean(true)},
{"Philip", "Milne", "Pool", new Integer(10), new Boolean(false)} };
this.tableSurvey = new JTable(new DefaultTableModel(data, columnNames));
this.scrollPaneSurvey = new JScrollPane(this.tableSurvey);
DefaultTableModel dtm = (DefaultTableModel) this.tableSurvey.getModel();
dtm.fireTableStructureChanged();
dtm.fireTableDataChanged();
this.scrollPaneSurvey.invalidate();
this.scrollPaneSurvey.validate();
this.panelSurvey.validate();
this.panelSurvey.repaint();
}