Java 在Swing中的jTable第一行转移焦点

Java 在Swing中的jTable第一行转移焦点,java,swing,jtable,Java,Swing,Jtable,我想将焦点传递到JTable的第一行。我不能使用editCellAt(行,列)方法,因为我不想允许用户更改表的内容。changeSelection(行、列、false、false)方法也不能正常工作 private void txtRawMaterial(java.awt.event.KeyEvent evt) //txtRawMaterial is textfield { if (evt.getKeyCode()==KeyEvent.VK_ENTER) {

我想将焦点传递到JTable的第一行。我不能使用editCellAt(行,列)方法,因为我不想允许用户更改表的内容。changeSelection(行、列、false、false)方法也不能正常工作

private void txtRawMaterial(java.awt.event.KeyEvent evt) //txtRawMaterial is textfield
{      
    if (evt.getKeyCode()==KeyEvent.VK_ENTER) 
    {
         if(table.getRowCount()>0)    //table is jTable
         {
                table.requestFocus();
         }
    }
}
请给我建议一些将焦点转移到第一排的方法

private void txtRawMaterial(java.awt.event.KeyEvent evt) //txtRawMaterial is textfield
{      
    if (evt.getKeyCode()==KeyEvent.VK_ENTER) 
    {
         if(table.getRowCount()>0)    //table is jTable
         {
                table.requestFocus();
         }
    }
}

我有文本字段和表格。最初,我的控件位于textfield。若我按ENTER键,控件将转到表的第一行。我提供了下面的代码。请帮帮我

private void txtRawMaterial(java.awt.event.KeyEvent evt) //txtRawMaterial is textfield
{      
    if (evt.getKeyCode()==KeyEvent.VK_ENTER) 
    {
         if(table.getRowCount()>0)    //table is jTable
         {
                table.requestFocus();
         }
    }
}
焦点(作为组件的JTable)和选择(行/列)这两个概念不一定相关,如果您想要两者都实现,则必须调用单独的方法来实现这两个概念:

private void txtRawMaterial(java.awt.event.KeyEvent evt) //txtRawMaterial is textfield
{      
    if (evt.getKeyCode()==KeyEvent.VK_ENTER) 
    {
         if(table.getRowCount()>0)    //table is jTable
         {
                table.requestFocus();
         }
    }
}
table.requestFocus();
table.changeSelection(0, 0, false, false);

还请注意,聚焦单元不是通常意义上的焦点所有者。相反,它是列选择模型和行选择模型的先导,通常有一个视觉线索,比如比其他模型更厚/不同的边框。

+1表示区别。另请参见引用的UIManager默认值。
private void txtRawMaterial(java.awt.event.KeyEvent evt) //txtRawMaterial is textfield
{      
    if (evt.getKeyCode()==KeyEvent.VK_ENTER) 
    {
         if(table.getRowCount()>0)    //table is jTable
         {
                table.requestFocus();
         }
    }
}