その通りです - を再構築する必要はありませんJPanel
。実際、 を再構築する必要さえないはずJTable
ですTableModel
。(また、Model-View-Controller 設計パターンについても読みたいと思うかもしれません)
代わりに、 のデータをリセットする必要がありますTableModel
。JTable
これにより、再塗装する必要があると思います。そうでない場合は、次のように呼び出すことができます。
table.tableChanged(new TableModelEvent(tableModel));
TableModel
または、新しいデータを使用して新しいを作成する方がよいと思われる場合は、次のようにします。
table.setModel(newTableModel);
これは、何か他のものによって更新された aのSSCCEです...データベース接続を a からの入力に置き換えましたが、アイデアが得られるはずです。JTable
JTextField
public class TableTest {
public static void main(String[] args) {
JFrame frame = new JFrame("Table Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextField text = new JTextField("Editable Text");
final TableModel model = new DefaultTableModel(new String[]{"Text"},1);
model.setValueAt(text.getText(), 0, 0);
text.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
model.setValueAt(text.getText(), 0, 0);
}
});
JTable table = new JTable(model);
JPanel panel = new JPanel(new BorderLayout());
panel.add(text, BorderLayout.NORTH);
panel.add(new JScrollPane(table), BorderLayout.SOUTH);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
}
}