Java Swing - JTable 如何在输入enter之后获取到刚输入的数据

先描述一下我遇到的具体场景

        我这里是需要在JTable中输入某个值并且输入了enter之后,在JTable外面JLabel同步显示刚刚输入的值。

这一部分,参考了博客:

https://blog.csdn.net/m0_37550986/article/details/81090426

不过这里有个问题就是,在你输入Enter的时候,表格没有结束编辑,也就是说你刚刚输入的数据并没有写到表格里面去,你可以获取到行号,但是你不能根据行号获取还未输入完毕的值。

这里百度到了一个很好的解法:

https://zhidao.baidu.com/question/99876251.html

/*************************此处为复制内容**********************/

应该有两种情况:
第一 如果你的光标还停留在那个单元格,这时候JTable默认该单元格还没有结束编辑,不会保存当前的值。

第二 如果你的光标不在那个单元格了,这时候JTable应该会认为单元格已经结束编辑,所以会读取编辑后的值。

根据你的描述,你应该是第一种操作,那么你可在点击那个按钮的时候,强制Jtable结束编辑状态,一般可以通过jTable.getCellEditor().stopCellEditing()来实现,但是如果你的单元格设置默认的编辑器的话,就需要通过jTable1.getCellEditor(row,column).stopCellEditing()来实现。

下面是我对上面需求做的代码。

tableTaskTest.addFocusListener(new FocusListener() {

			@Override
			public void focusGained(FocusEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void focusLost(FocusEvent e) {
				// TODO Auto-generated method stub
				if(tableTaskTest.isEditing()) {
					
					tableTaskTest.getEditorComponent().addKeyListener(new KeyListener() {
						@Override
						public void keyTyped(KeyEvent e) {
							// TODO Auto-generated method stub
							
						}

						
						@Override
						public void keyPressed(KeyEvent e) {
							// TODO Auto-generated method stub
							if(e.getKeyCode() == KeyEvent.VK_ENTER) {
								int nEditRow = tableTaskTest.getEditingRow();
								int nEditColumn = tableTaskTest.getEditingColumn();
								if(tableTaskTest.getCellEditor() == null)return;
								tableTaskTest.getCellEditor().stopCellEditing();
								String strSelectedTestTaskName = (String) tableTaskTest.getValueAt(nEditRow, nEditColumn);
								lblSelectedTestTaskName.setText(strSelectedTestTaskName);	
							}
						}

						
						@Override
						public void keyReleased(KeyEvent e) {
							// TODO Auto-generated method stub
							
						}
					});
					
				}
			}
        	
        });

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑咖啡不加糖丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值