我正在努力掌握 Pocket PC 的 Java ME 开发。我正在运行 NSIcom CrE-ME 模拟器并使用 NetBeans 6.5 构建我的应用程序。
该应用程序基于三个选项卡面板,每个选项卡面板都有 Swing 组件。内容 Swing 组件在应用程序的各个点进行更新。这些组件包括 JTextArea、JTextFields,最重要的是 JScrollPane 中的 JTable。
JTable 引起了问题。如果我通过 Matisse 使用一些示例数据对其进行初始化,它就会出现。但是,如果我尝试在运行时在下面的 populateFields() 方法中设置 JTable 的引用,则不会出现任何内容。请注意,这只是使用 Sun 教程中的示例表数据,甚至不是我的自定义 TableModel。
我究竟做错了什么?是否有一些我需要调用的明显更新方法,或者我错过了一些其他明显的错误/conecpt?我几乎尝试了我遇到的所有可能的方法,我认为这些方法可能与它有关。
在程序期间的不同时间调用 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();
}