在触发动作侦听器后填充JTable



我有一个static List<List<String>> tableValues;,我想在触发按钮"回车"后将其写入JTable中。由于我是GUI编程的新手,我的列表已被填充,我不知道如何在触发事件后创建和填充表,并且JTable值会动态更改。

btnEnter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String date = textField_3.getText();
//JTable table = new JTable();
//JScrollPane tableContainer = new JScrollPane(table);
try {
tableValues = Inserts.search(date,3);  //table is filled
for(List<String> value :  tableValues) {
System.out.println(value);
}
//table.setVisible(true);
//panel_7.add(tableContainer, BorderLayout.CENTER); --> I want to add the table to a Panel
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

JTable可以使用setModel()进行更新。请参阅以下示例。

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.util.*;
public class UpdateTable {
public static void main(String[] args) {
List<List<String>> tableValues = new ArrayList<>();
tableValues.add(Arrays.asList("value11", "value12", "value13"));
tableValues.add(Arrays.asList("value21", "value22", "value23"));
tableValues.add(Arrays.asList("value31", "value32", "value33"));
tableValues.add(Arrays.asList("value41", "value42", "value43"));
JTable table = new JTable();
JButton button = new JButton("enter");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String[][] data = transform(tableValues);
String[] columnNames = new String[] {"Column1", "Column2", "Column3"};
table.setModel(new DefaultTableModel(data, columnNames));
}
});
JFrame f = new JFrame("Update Table");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
f.getContentPane().add(button, BorderLayout.SOUTH);
f.setBounds(300, 200, 400, 300);
f.setVisible(true);
}
private static String[][] transform(List<List<String>> list) {
String[][] array = new String[4][3];
for (int i = 0; i < list.size(); i++) {
for(int j = 0; j < list.get(i).size(); j++) {
array[i][j] = list.get(i).get(j);
}
}
return array;
}
}

最新更新