0

我有一个文本字段,当获取焦点时会显示一个带有表格的面板,而当焦点丢失时会使其不可见。

在该字段中键入搜索旁边的数据库并在表格中显示结果。

当我单击表格选择一行时,文本字段失去焦点,然后立即再次获得焦点,我无法选择一行(行选择 - 启用,单元格编辑 - 禁用,选择模式 - 单选)

TextField 何时获得和失去焦点以及键入时的代码:

private void productBrandTextFieldFocusGained(java.awt.event.FocusEvent evt) {                                                  
    brandSearchPanel.setVisible(true);
    displayBrands();
} 

private void productBrandTextFieldFocusLost(java.awt.event.FocusEvent evt) {                                                
    brandSearchPanel.setVisible(false);
}

private void productBrandTextFieldKeyReleased(java.awt.event.KeyEvent evt) {                                                  
    searchBrand();                           
}   

图片显示获得、丢失或打字时会发生什么@ http://sdrv.ms/14TEq2T

另外,我希望能够使用向下键浏览行。请建议一些代码,当按下向下键时,焦点会从文本字段中丢失并选择行,然后按向上或向下键将向上或向下行。

4

1 回答 1

1

FocusEvent 有一个getOppositeComponent()您可以在逻辑中使用的方法。

当文本字段失去焦点时,您将调用此方法。如果获得焦点的组件是表格,那么您不会使表格面板不可见。然后当用户点击表格时焦点应该留在那里。

要处理文本字段中的向上/向下箭头键,您需要使用Key Bindings. 您将创建一个从表中获取当前选择的操作,然后根据按下的键将选择更改 +/- 1。阅读有关如何使用键绑定的 Swing 教程以获取更多信息。

于 2013-06-24T22:12:41.720 回答