如何让jtable失去选中行状态

Q::一个jtable布局在一个jframe中,鼠标选中了table中的某行数据,现在我想在鼠标点击其他位置(jtable以外的位置)时,table中处于选中状态的数据行选中状态被取消。 如何实现啊?

A::1、如果你点击的其它位置是一个可以获得焦点的组件,那么就会触发JTable焦点丢失事件,丢失焦点时可以将JTable的选择状态清除
table.addFocusListener(new FocusListener(){
  public void focusGained(FocusEvent e) {}
  public void focusLost(FocusEvent e) {
   if (!e.isTemporary()) {
     table.clearSelection();
   }
  }
});

2、如果单击的地方是窗体空白处,该处无法获取焦点,那么可以通过添加JFrame的鼠标监听事件,如果窗体被点击,那么将table选择状态清除

frame.addMouseListener(new MouseAdapter(){
 public void mouseClicked(MouseEvent e) {
   table.clearSelection();
 }
});

 

个人看法及过去的实现方法:不让其丢失选中状态,只改变其选中颜色。一般改淡或改为白色。

 
### 回答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、付费专栏及课程。

余额充值