关于JTable设置数据源以及获取焦点行数据问题

这两天完成了一个学生信息管理系统,其中Swing做界面,mysql为数据库。

其中,显示数据库的数据我是用的JScrollPane中添加Jtable的方法做的,把数据库的内容作为数据源显示在JTable中,以下是相关代码:

JFrame中

table = new JTable(new MyTableModel(list)); //传入数据源
jsp = new JScrollPane(table);
table.setBounds(0, 0, 600, 400);
jsp.setBounds(50, 70, 600, 400);

特别还注意的是要设置新的数据源信息可以用table.setModel(new MyTableModel(list));方法

数据源  MyTableModel中

public class MyTableModel extends AbstractTableModel
{
StudentImpl si = new StudentImpl();
        //表头
String[] names = null;

//数据
String[][] datas = null;

public MyTableModel(List<StudentBean> list)//构造函数传入数据源信息
{
/*构造数据*/
names = getNames();
if(list==null){
list = si.getAll();
}

datas = new String[list.size()][];

for(int i=0;i<list.size();i++)
{
StudentBean sb = list.get(i);
String gender = null;
if(sb.isGender()){
gender = "男";
}
else gender = "女";
datas[i] = new String[]{sb.getSno()+"",sb.getSname(),sb.getAge()+"",gender,sb.getBirthday()+""} ;
}

}

在做到删除功能时,我有些犹豫,本来想通过再创建个jFrame然后传id删的,但考虑再三后觉得不太妥,于是百度了下如何获取JTable中焦点行的数据,以下是相关代码:

String num = "" + table.getValueAt(table.getSelectedRow(),0).toString();//得到选中行的学号,其中getSelectedRow()方法取得所在选择的行,参数0代表该行的第一列。

要获得焦点行所在的所有列的数据,只需对参数加个循环即可。


### 回答1: 好的,关于jtable获取选中数据,可以使用以下代码: ``` int selectedRow = jtable.getSelectedRow(); String value1 = jtable.getModel().getValueAt(selectedRow, 0).toString(); String value2 = jtable.getModel().getValueAt(selectedRow, 1).toString(); ``` 其中,`selectedRow` 是获取被选中的数,`value1` 和 `value2` 是获取的第一列和第二列数据。 ### 回答2: 在使用JTable时,我们可以通过以下步骤来获取选中数据: 1. 首先,我们需要获取JTable的模型(TableModel),可以通过getTable()方法来获得。 2. 接下来,我们可以通过getSelectedRows()方法来获取选中的的索引数组。 3. 然后,我们可以使用for循环遍历选中的索引数组,依次获取每一数据。 4. 最后,我们可以通过getValueAt()方法来从模型中获取每个单元格的数据,并将其存储到一个二维数组或集合中。 下面是一个示例代码: ```java JTable table = new JTable(); // 假设有一个JTable对象 // 获取JTable的模型 TableModel model = table.getModel(); // 获取选中的的索引数组 int[] selectedRows = table.getSelectedRows(); // 创建一个二维数组,用于存储选中数据 Object[][] selectedData = new Object[selectedRows.length][model.getColumnCount()]; // 遍历选中的索引数组 for (int i = 0; i < selectedRows.length; i++) { // 获取每个单元格的数据,并存储到二维数组中 for (int j = 0; j < model.getColumnCount(); j++) { selectedData[i][j] = model.getValueAt(selectedRows[i], j); } } // 打印选中数据 for (int i = 0; i < selectedData.length; i++) { for (int j = 0; j < selectedData[i].length; j++) { System.out.print(selectedData[i][j] + " "); } System.out.println(); } ``` 通过以上步骤,我们可以获取到选中数据,并根据实际需求进相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值