要在jTable中获取所选行,我使用了MouseEvent(MouseClicked
)。这很好用,点击进入表格后给我正确的rownumber。
要通过jTable导航,我添加了一个新的监听器(KeyPressed
)。如果我按向上键,则rownumber 不增加。如果我再次按向上键,行数将会更新,但它是之前的行数。
private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == evt.VK_UP){
System.out.println("Key UP" + jTable1.getSelectedRow());
}
if(evt.getKeyCode() == evt.VK_DOWN){
System.out.println("Key DOWN" + jTable1.getSelectedRow());
}
}
这是简单的代码。如果我单击进入表格的第一行并按下向下键,则输出为“Key DOWN0”。但是第二行被选中并且输出应该是“Key DOWN1”。
答案 0 :(得分:1)
要在jTable中获取所选行,我使用了MouseEvent (的mouseClicked)。这很好,并给我正确的rownumber 点击进入表格后。
为了通过jTable导航,我添加了一个新的Listener(KeyPressed)。如果 我按下向上键,没有增加rownumber。如果我按 再次向上键,rowcount将被更新,但它是rowcount 从以前开始
我认为你需要
答案 1 :(得分:1)
@mKorbel已经发布了正确答案:不要将低级侦听器用于语义要求 - ListSelectionModel / -Event隐藏所有低级别的细节: - )
细节:
因此,当您的应用程序代码看到该事件时,该表还没有机会做出反应 - 您正在打印的内容是之前的选择其内部更改(由绑定触发) )。
答案 2 :(得分:-1)
您应该使用KeyReleased
代替KeyPressed