Ich habe zwei Tabellen, und ich versuche, die Daten aus einem Datensatz in einer Tabelle zu einer anderen Tabelle hinzuzufügen, wenn auf diesen Datensatz geklickt wird.Verwenden von FireTableDataChanged zum Aktualisieren von Tabellendaten
Derzeit, wenn ich auf die Tabelle klicke, werden die Werte zum clickedData hinzugefügt, aber diese Daten werden nicht in der Tabelle aktualisiert.
Hier ist mein Code:
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);
}
}
Vielen Dank, das Problem wurde behoben –