【发布时间】:2016-06-05 09:34:01
【问题描述】:
我创建了自己的名为CustomTableModel 的类,它从 DefaultTableModel 扩展而来。
public class CustomTableModel extends DefaultTableModel {/*[...]*/}
我的计划是,当您使用 new CustomTableModel(); 调用我的构造函数时,您会得到一个新的 CustomTableModel,并使用列名和列类预先初始化。
我运行了类似的东西,但当前的实现是曾经来自 Eclipse AWT(Window Builder)的东西,您还可以使用 GUI 来设置您的 TableModel。当前的实现如下所示:
public static DefaultTableModel createEmptyModel() {
model = new DefaultTableModel(new Object[][]{},
new String[]{"Lfd. Nr.", "FB Nr.", "Auftr. / Meld. Nr.", "Betra Nr.", "Datum", "Bahnhof", "Str. Km.",
"Sprz.", "Arb. Zeit", "Mitarbeiter", "Auftrag / Objekt(e)", "Anmerkungen", "Fertig"}) {
@SuppressWarnings("rawtypes")
Class[] columnTypes = new Class[]{Integer.class, String.class, String.class, String.class, String.class,
String.class, String.class, String.class, String.class, String.class, String.class, String.class, Boolean.class};
@SuppressWarnings({"unchecked", "rawtypes"})
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
};
return model;
}
因为它可能有效,它根本不是一个真正的CustomTableModel,它只是一个从方法内创建并返回+完全混淆的DefaultTableModel(至少对我来说:))。
虽然它可以工作,但我不确定它到底是如何工作的,据我了解,它将一个空的对象数组 (2D) 以及一个字符串数组传递给 DefaultTableModel 的构造函数,到目前为止这是可以理解的(空数据 +列名)根据 DefaultTableModel 的构造函数的要求。 但是我不明白在 ..."Fertig"}) { 之后列类是如何传递给构造函数的,因为两个所需的参数(数据 + 列名)都已经传递了。
我最好的猜测是这种方法:
public CustomTableModel() {
super(new Object[][]{{},{Integer.class, String.class, String.class, String.class, String.class,
String.class, String.class, String.class, String.class, String.class, String.class, String.class, Boolean.class}}, new String[]{"Lfd. Nr.", "FB Nr.", "Auftr. / Meld. Nr.", "Betra Nr.", "Datum", "Bahnhof", "Str. Km.",
"Sprz.", "Arb. Zeit", "Mitarbeiter", "Auftrag / Objekt(e)", "Anmerkungen", "Fertig"});
}
据此,我认为我的课程通过是完全错误的。
如果有人能告诉我如何做到这一点,我会非常高兴,我想了解这一点。
【问题讨论】:
标签: java swing jtable awt defaulttablemodel