gpt4 book ai didi

java - 使用 fireTableDataChanged 更新表数据

转载 作者:行者123 更新时间:2023-11-30 06:45:24 24 4
gpt4 key购买 nike

我有两个表,当单击该记录时,我尝试将一个表中的记录中的数据添加到另一个表中。

当前,当我单击表格时,值会添加到 clickedData,但该数据不会在表格中刷新。

这是我的代码:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.util.*;

class TableTest extends JPanel {
JTable tbl1, tbl2;
GridBagConstraints gc = new GridBagConstraints();

public TableTest(){
this.setLayout(new GridBagLayout());
gc.insets = new Insets(10, 10, 10, 30);
Object[][] data = new Object[100][2];
Object[][] clickedData = new Object[100][2];
String[] columnNames = {"X", "Y"};

//Initialise tables
tbl1 = new JTable(data,columnNames);
DefaultTableModel model = new DefaultTableModel(data, columnNames);

DefaultTableModel myModel = new DefaultTableModel(data,columnNames){
public boolean isCellEditable(int row, int column){
return false;
}
};
tbl1.setModel(myModel);

DefaultTableModel model2 = new DefaultTableModel(clickedData,columnNames);
tbl2 = new JTable(model2);

DefaultTableModel myModel2 = new DefaultTableModel(clickedData,columnNames){

public boolean isCellEditable(int row, int column){
return false;
}
};

//Update Table Data
tbl1.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt){
int row = tbl1.rowAtPoint(evt.getPoint());
int col = tbl1.columnAtPoint(evt.getPoint());
//basket[0] = row;
clickedData[0][0] = tbl1.getValueAt(row,col);
clickedData[0][1] = tbl1.getValueAt(row,col+1);

//use fireTableDatachanged
model2.fireTableDataChanged();

}
});

initLayout(0,0,tbl1);
initLayout(3,0,tbl2);
}

public void initLayout(int xlayout, int ylayout, JComponent component){
gc.gridx = xlayout;
gc.gridy = ylayout;
this.add(component,gc);
}
}

最佳答案

因为DefaultTableModel在内部使用 convertToVector(),更新用于创建 model2clickedData 数组不会更改模型 dataVector 的内容>。因此,fireTableDataChanged() 通知监听的 JTable,但模型在此期间并未发生更改。相反,通过 setValueAt() 更新 model2,这将为您触发正确的事件。检查了类似的问题here .

还可以考虑使用 ListSelectionListener而不是 MouseListener

关于java - 使用 fireTableDataChanged 更新表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766902/

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