我有一个s
,我想在触发按钮“ enter”后写在JTable中,因为我是GUI编程的新手,所以我的列表已满,我不知道如何在创建后填充表格事件被触发,并且JTable值动态变化。
t'
答案 0 :(得分:0)
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;
}
}