java,gui,如何更改表格中的数据,用代码解释,加注释
时间: 2023-08-10 16:07:05 浏览: 81
假设我们有一个包含学生信息的表格,其中包括每个学生的姓名、年龄、性别和成绩。我们可以使用以下代码更改表格中的数据:
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TableDemo extends JFrame {
private JTable table;
private DefaultTableModel model;
public TableDemo() {
setTitle("学生信息");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 300);
model = new DefaultTableModel();
model.addColumn("姓名");
model.addColumn("年龄");
model.addColumn("性别");
model.addColumn("成绩");
table = new JTable(model);
// 添加一些测试数据
Object[] data1 = {"张三", "18", "男", "89"};
Object[] data2 = {"李四", "19", "女", "92"};
Object[] data3 = {"王五", "20", "男", "85"};
model.addRow(data1);
model.addRow(data2);
model.addRow(data3);
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
JButton btnChange = new JButton("更改数据");
btnChange.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取所选行的索引
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "请先选择一行数据");
return;
}
// 获取所选行的数据
Object[] rowData = new Object[model.getColumnCount()];
for (int i = 0; i < model.getColumnCount(); i++) {
rowData[i] = table.getValueAt(selectedRow, i);
}
// 修改数据
rowData[3] = Integer.parseInt(rowData[3].toString()) + 5;
// 更新表格
model.setValueAt(rowData[0], selectedRow, 0);
model.setValueAt(rowData[1], selectedRow, 1);
model.setValueAt(rowData[2], selectedRow, 2);
model.setValueAt(rowData[3], selectedRow, 3);
}
});
getContentPane().add(btnChange, "South");
}
public static void main(String[] args) {
TableDemo demo = new TableDemo();
demo.setVisible(true);
}
}
```
注释如下:
- `JTable` 类是 Java Swing 中用于显示表格的组件,`DefaultTableModel` 类是 `JTable` 的一个实现类,可以用来管理表格数据。
- 在 `model` 中添加列名和测试数据。
- 使用 `JScrollPane` 将 `table` 包装起来,以便在需要时可以滚动表格。
- 创建一个 `btnChange` 按钮,并为其添加一个 `ActionListener`,当按钮被点击时,会执行 `actionPerformed` 方法中的代码。
- 使用 `table.getSelectedRow()` 方法获取所选行的索引,如果没有选中任何行,则提示用户。
- 获取所选行的数据,将最后一列的值加上 5。
- 使用 `model.setValueAt()` 方法更新表格中的数据。第一个参数是新值,第二个参数是行索引,第三个参数是列索引。
阅读全文