我试图通过此代码突出显示JTable
中的焦点移动:
if(e.getKeyCode() == (KeyEvent.VK_TAB)){
int prevRow;
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
if(col == 0) {
System.out.println(row);
MinMax val = null;
TableCellRenderer currRend = table.getCellRenderer(row,col);
val = (MinMax) table.getValueAt(row, col);
JComponent comp = (JComponent) currRend.getTableCellRendererComponent(table, val, false, false, row,col);
comp.setBorder(BorderFactory.createLineBorder(Color.RED));
table.requestFocus(true);
}
情况是这样的,当我第一次按TAB选择第二行时,最初焦点设置在行[0]上,边框未绘制,当我按第二次选择第三行时突出显示第2行和第3行。
之后,只要按下选项卡,边框的突出显示就会与行选择相关。
当我在正常模式下运行应用程序而不是在具有断点的de-bugger模式下时,我遇到了问题。
答案 0 :(得分:1)
没有理由对来自KeyEvents
的{{1}}感到困扰,如果没有生成一些额外的特殊KeyListener
,请执行Events
,那么你必须测试是否prepareRenderer
1}}或isSelected()
,我认为一切都没有更好,就像@ camickr的Table Row Rendering,