*在工具栏添加*编辑按钮以及图标*,外加一个监听器用于编辑操作
*设计监听器里面的方法(重点)
设计思路:当点击编辑按钮时,触发onEdit这个方法
onEdit:
*首先获取选中的行
//获取选中的行的索引
int[] rows=table.getSelectedRows();
if(rows.length==0)return;
//获取选中的行
int row=rows[0]; //只编辑选中的第一行
Student s=getTableRow(row);
* 然后将原来的信息初始化到信息编辑框
//弹出编辑对话框
EditStudentDialog dlg=new EditStudentDialog(this);
//设置初始值
dlg.setValue(s);
*如果点击了确定按钮,
if(dlg.exec())
{
//获取学生信息
Student stu=dlg.getValue();
//更新到Model
setTableRow(stu,row);
//保存到文件
saveData();
}
onEdit;
private void onEdit()
{
//获取选中的行的索引
int[] rows=table.getSelectedRows();
if(rows.length==0)return;
//获取选中的行
int row=rows[0]; //只编辑选中的第一行
Student s=getTableRow(row);
//弹出编辑对话框
EditStudentDialog dlg=new EditStudentDialog(this);
//设置初始值
dlg.setValue(s);
if(dlg.exec())
{
Student stu=dlg.getValue();
//更新到Model
setTableRow(stu,row);
saveData(); //保存文件
}
}
setValue;
public void setValue(Student v)
{
idField.setEditable(false);
idField.setText(v.id);
nameField.setText(v.name);
//System.out.println(v.sex);
sexField.setSelectedIndex(v.sex? 0:1); //条件表达式(男为true,对应0即下拉列表的第一个:男)
birthField.setText(v.birthday);
phoneField.setText(v.cellphone);
}
然后再添加两个方法:getTableRow() 与setTableRow(),分别是获取行的信息、设置行的信息
//获取 表格空间中的一条记录的值
private Student getTableRow(int row)
{
Student s=new Student();
s.id=(String) tableModel.getValueAt(row, 0);
s.name=(String) tableModel.getValueAt(row, 1);
s.sex=(Boolean) tableModel.getValueAt(row, 2);
s.birthday=(String) tableModel.getValueAt(row, 3);
s.cellphone=(String) tableModel.getValueAt(row, 4);
return s;
}
//设置 表格控件中的一条记录的值
private void setTableRow(Student s,int row)
{
tableModel.setValueAt(s.id, row, 0);
tableModel.setValueAt(s.name, row, 1);
tableModel.setValueAt(s.sex, row, 2);
tableModel.setValueAt(s.birthday, row, 3);
tableModel.setValueAt(s.cellphone, row, 4);
}
注意优秀代码的三个特性之一:可读性(让人们一眼看得明明白白、清清楚楚)