下面是一个示例代码,演示了如何保存所选的JTable行并在另一个JTable中显示它们:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame {
private JTable sourceTable;
private JTable targetTable;
public MainFrame() {
setTitle("JTable Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
// 创建源表格
String[] columnNames = {"Name", "Age", "Gender"};
Object[][] data = {
{"Alice", 25, "Female"},
{"Bob", 30, "Male"},
{"Charlie", 35, "Male"},
{"Diana", 28, "Female"},
{"Eve", 32, "Female"}
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
sourceTable = new JTable(model);
JScrollPane scrollPane1 = new JScrollPane(sourceTable);
scrollPane1.setPreferredSize(new Dimension(300, 150));
add(scrollPane1);
// 创建保存按钮
JButton saveButton = new JButton("Save");
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取所选的行
int[] selectedRows = sourceTable.getSelectedRows();
// 创建目标表格
DefaultTableModel targetModel = new DefaultTableModel(columnNames, 0);
targetTable.setModel(targetModel);
// 将所选行添加到目标表格
for (int row : selectedRows) {
Object[] rowData = new Object[columnNames.length];
for (int i = 0; i < columnNames.length; i++) {
rowData[i] = sourceTable.getValueAt(row, i);
}
targetModel.addRow(rowData);
}
}
});
add(saveButton);
// 创建目标表格
targetTable = new JTable();
JScrollPane scrollPane2 = new JScrollPane(targetTable);
scrollPane2.setPreferredSize(new Dimension(300, 150));
add(scrollPane2);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainFrame();
}
});
}
}
在上面的代码中,我们首先创建了一个源表格(sourceTable),并使用DefaultTableModel设置了表格的数据和列名。然后创建了一个保存按钮(saveButton),当点击该按钮时,会获取所选的行,并创建一个目标表格(targetTable)来显示所选行的数据。最后,我们使用JScrollPane将表格放入滚动窗格中,并将滚动窗格添加到JFrame中。
下一篇:保存所选项目在列表中