gpt4 book ai didi

java - 更新 jtable java 时出现问题

转载 作者:行者123 更新时间:2023-11-29 06:02:29 25 4
gpt4 key购买 nike

我创建了一个类来创建我的 jtable。我有一些问题,因为当我尝试更新它时,它不起作用(没有任何反应 - 我认为我尝试更新它的方式是错误的?)。我究竟做错了什么?

class tableClass
{
public Vector rowData = null;
public Vector columnNames = null;
private JTable jTable;
DefaultTableModel model;

public tableClass(JPanel jPanel, Vector rowDataInput, Vector columnNamesInput)
{
rowData = rowDataInput;
columnNames = columnNamesInput;

jTable = new JTable(rowData, columnNames);
jTable.setFillsViewportHeight(true);

JScrollPane jScrollPane = new JScrollPane(jTable);
jScrollPane.setPreferredSize(new Dimension(300, 100));
jPanel.add(jScrollPane,BorderLayout.CENTER);
}

public void updateTable(Vector rowDataInput)
{
rowData = rowDataInput;
model =(DefaultTableModel)jTable.getModel();
model.fireTableDataChanged();
}
}

最佳答案

这里为您指明正确的方向是您类(class)的一个稍微干净的工作版本。如果您有大量数据,请注意像这样更新表格效率不高!您最好自己继承 AbstractTableModel 并映射到您已有的任何数据结构。

public class Table {
public Vector<String> columnNames;
private JTable table;

public Table(JPanel panel, Vector<Vector<Object>> rowData,
Vector<String> columnNames) {
this.columnNames = columnNames;

table = new JTable(rowData, columnNames);
table.setFillsViewportHeight(true);

JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(300, 100));
panel.add(scrollPane, BorderLayout.CENTER);
}

public void updateTable(Vector<Vector<Object>> rowData) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.setDataVector(rowData, columnNames);
}

关于java - 更新 jtable java 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com