我设法潜伏在周围并找到一个好的类,它提供用RowTableModel(List)替换
JTable(Object[][]data, Object[]列名称)
天知道花了多长时间,我还没能解决一个奇怪的问题。该表正确显示了除了内部数据之外的所有内容。
显然,这些空行是我拥有的学生数(在本例中为5),但是没有打印任何数据。
我的想法是,我需要为每一列分配一个特定的学生字段,例如,对于行名,我分配Student.getName()
如果您想查看RowTableModel
这是我使用过的文档化类方法/构造函数:
构造器
/**
* Constructs a <code>RowTableModel</code> with initial data and
* customized column names.
*
* Each item in the <code>modelData</code> List must also be a List Object
* containing items for each column of the row.
*
* Each column's name will be taken from the <code>columnNames</code>
* List and the number of colums is determined by thenumber of items
* in the <code>columnNames</code> List.
*
* Sub classes creating a model using this constructor must make sure
* to invoke the setRowClass() method.
*
* @param modelData the data of the table
* @param columnNames <code>List</code> containing the names
* of the new columns
*/
protected RowTableModel(List<T> modelData, List<String> columnNames)
{
setDataAndColumnNames(modelData, columnNames);
}
setDataAndColumnNames:
/**
* Reset the data and column names of the model.
*
* A fireTableStructureChanged event will be generated.
*
* @param modelData the data of the table
* @param columnNames <code>List</code> containing the names
* of the new columns
*/
protected void setDataAndColumnNames(List<T> modelData, List<String> columnNames)
{
this.modelData = modelData;
this.columnNames = columnNames;
columnClasses = new Class[getColumnCount()];
isColumnEditable = new Boolean[getColumnCount()];
fireTableStructureChanged();
}
getValueAt(int行,int列)-工作代码!:
@Override
public Object getValueAt(int row, int col) {
Student myStudent = getRow(row);
switch(col){
case 1: return students.get(row).getTeacherId();
case 2: return students.get(row).getId();
case 3: return students.get(row).getName();
case 4: return students.get(row).getSurname();
case 5: return students.get(row).getEmail();
case 6: return students.get(row).getDateOfBirth();
case 7: return students.get(row).getTel();
case 8: return students.get(row).getCourse();
case 9: return students.get(row).isOOP();
case 10: return students.get(row).getYearOfMembership();
case 11: return students.get(row).hasConsent();
default: return null;
}
}
看来我没有完全理解整件事
这可能需要一段时间,但我必须问,为什么您的代码看起来与示例中的代码完全不同?在示例中,我在哪里引用二维数组?
您所要做的就是显示一个 Student
对象而不是 JButton
对象。因此,基本上您需要做的就是将 JButton 的所有引用更改为 Student,然后填写 Student 的属性。
因此,我再次问,显示如何扩展RowTableModel的代码在哪里?getValueAt()方法的哪部分您不理解?
示例中的代码是:
@Override
public Object getValueAt(int row, int column)
{
JButton button = getRow(row);
switch (column)
{
case 0: return button.getText();
case 1: return button.getToolTipText();
case 2: return button.isEnabled();
case 3: return button.isVisible();
default: return null;
}
}
您没有在模型中存储JButton对象,因此您更改了学生对象的代码。类似于:
@Override
public Object getValueAt(int row, int column)
{
Student student = getRow(row);
switch (column)
{
case 0: return student.getTeacherId();
case 1: return student.getId();
case 2: return ...;
case 3: return ...;
default: return null;
}
}
我们不会读心术。我们不知道是什么迷惑了你。如果你不问一个具体的问题,你怎么能指望我们提供帮助呢?这就是为什么你张贴你的代码,以便我们可以更好地了解你正在试图做什么或已经做了什么。
从您提供的链接:
RowTableModel是一个抽象类。它不实现TableModel的getValueAt()或setValueAt()方法。这将允许您扩展模型以支持模型中任何类型的行对象。您只需要扩展这个类来为特定的行对象类型实现这些方法。有关如何完成此操作的简单示例,请参阅下面的JButtonTableModel示例代码。
如果没有实现这些方法,JTable
将无法查询表数据模型。因此,将不使用构造函数中传递的数据。
请参阅TableModel的Java文档。
问题内容: 如何设置Jenkins作业以触发在变量/参数中动态定义的作业? 我的问题的伪代码: 生成操作“触发/调用在其他项目上生成”以及生成后操作“参数化触发器插件”和“生成其他项目”不允许在参数中定义作业名称。 我似乎没有将GroovyAxis插件与Build多重配置项目一起使用。常规代码似乎不在作业构建环境中运行,而是在作业配置保存期间运行。 我了解您可以通过脚本通过其build-start
问题内容: 我有一个针对ui-select2下拉菜单的手表设置(来自ui-bootstrap)。手表会在加载时触发,但不会在数据更改时触发,我不知道为什么。 不应用模型更改或不使用第三个参数进行相等性比较(至少来自我的代码)不是一个常见的问题。 我需要怎么做才能使其点火? 这是一个说明问题的小问题。 问题答案: 我修好了一些东西。 http://plnkr.co/edit/5Zaln7QT2gET
我在动态数据库表上启用了流。修改项目时,将触发 lambda 函数。我认为我在 lambda 触发器端、权限端和 dynamodb 端都正确设置了所有内容。我还使用测试数据运行了我的lambda函数,它成功了。但是,当表中的项被修改时,触发器没有启动我的 lambda 函数。相反,我得到了以下错误: 批量:100最后处理结果:问题:函数调用失败 你知道调试这个的最佳方法是什么吗?我查看了Cloud
我有这个脚本: HTML中的用法: 由于某些原因,它的工作,如果页面重新加载一半,但不,它没有开火,在它工作之前,所以我不知道发生了什么。我在wordpress网站上使用这个。
问题内容: 我正在使用JavaFX使用一个简单的CSV Viewer测试自己,并且无法填充表格数据。我确实动态创建了列,但是数据值是不行的。我在网上搜索后发现了几种方法,但是所有方法都包括带有自定义类(包括获取/设置)的ObservableList,该类在CSV查看器中必须是动态的(CSV可以有任意数量的列,这意味着可以有任意数量的数据值)。 例: 问题答案: 使用DataFX,这将使您的工作更轻
如 动态 Inventory 所介绍,ansible可以从一个动态的数据源获取到inventory信息,包含云端数据源 怎么写一个自己的数据源? 很简单!我们仅仅需要创建一个在适当参数下,能够返回正确JSON格式数据的脚本或者程序,你可以使用任何语言来实现. 脚本规范 当我们在外部使用``–list``参数调用这个脚本时,这个脚本必须返回一个JSON散列/字典,它包含所管理的所有组.每个组的val