Swing-JTable(修改记录)7/9

*在工具栏添加*编辑按钮以及图标*,外加一个监听器用于编辑操作

*设计监听器里面的方法(重点)

        设计思路:当点击编辑按钮时,触发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);
	}

注意优秀代码的三个特性之一:可读性(让人们一眼看得明明白白、清清楚楚)

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了在Java SwingJTable中显示MySQL数据库中的记录,你需要执行以下步骤: 1. 连接到MySQL数据库:使用JDBC API连接到MySQL数据库。你需要提供MySQL数据库的URL、用户名和密码。 2. 准备SQL查询:使用SQL查询语句从MySQL数据库中检索数据。 3. 执行SQL查询:执行SQL查询并将结果存储在ResultSet对象中。 4. 创建TableModel:TableModel是JTable显示数据的核心。你需要从ResultSet对象中检索列名和数据,并创建一个DefaultTableModel对象。 5. 创建JTable:使用DefaultTableModel对象创建JTable对象。 6. 添加JTable到JFrame:将JTable对象添加到JFrame中。 下面是一个示例代码,它演示了如何在Java SwingJTable中显示MySQL数据库中的记录: ```java import java.sql.*; import javax.swing.*; import javax.swing.table.*; public class MySQLJTableExample extends JFrame { private JTable table; public MySQLJTableExample() { setTitle("MySQL JTable Example"); setSize(500, 500); setDefaultCloseOperation(EXIT_ON_CLOSE); // 连接到MySQL数据库 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "mypassword"; String query = "SELECT * FROM mytable"; try (Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query)) { // 创建TableModel DefaultTableModel tableModel = new DefaultTableModel(); ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { tableModel.addColumn(metaData.getColumnName(i)); } while (resultSet.next()) { Object[] row = new Object[columnCount]; for (int i = 1; i <= columnCount; i++) { row[i - 1] = resultSet.getObject(i); } tableModel.addRow(row); } // 创建JTable table = new JTable(tableModel); // 添加JTable到JFrame add(new JScrollPane(table)); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { new MySQLJTableExample().setVisible(true); } } ``` 这个示例代码连接到名为"mydatabase"的MySQL数据库,用户名为"root",密码为"mypassword"。它从"mytable"表中检索所有记录,并在JTable中显示它们。你可以根据自己的需要修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值