Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击JTable时,文本字段焦点丢失或获得_Java_Swing_Focuslistener - Fatal编程技术网

Java 单击JTable时,文本字段焦点丢失或获得

Java 单击JTable时,文本字段焦点丢失或获得,java,swing,focuslistener,Java,Swing,Focuslistener,我有一个文本字段,当获取焦点时显示一个带有表格的面板,当焦点丢失时使其不可见 在字段中键入内容将搜索旁边的数据库,并在表中显示结果 当我单击表格选择一行时,文本字段失去焦点,然后立即再次获得焦点,我无法选择一行(行选择-启用,单元格编辑-禁用,选择模式-单选) 文本字段获得和失去焦点时的代码键入时: private void productBrandTextFieldFocusGained(java.awt.event.FocusEvent evt) {

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

在字段中键入内容将搜索旁边的数据库,并在表中显示结果

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

文本字段获得和失去焦点时的代码键入时:

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();                           
}   
显示焦点获得、丢失或键入时发生的情况的图像@


另外,我希望能够使用向下键浏览这些行。请提供一些代码,当按下向下键时,文本字段中的焦点将丢失,并且选择了行,按下向上键或向下键将向上或向下移动行。

FocusEvent有一个方法
GetObjectiveComponent()
,您可以在逻辑中使用该方法

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


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

private void productBrandTextFieldFocusLost(java.awt.event.FocusEvent evt){if(evt.getObjectItemComponent()instanceof javax.Swing.JTable){}else{brandSearchPanel.setVisible(false);}