【问题标题】:Editable JcomboBox Action event on key released not working按键上的可编辑 JcomboBox 动作事件不起作用
【发布时间】:2014-06-16 19:37:12
【问题描述】:

我有一个名为 c 的 JComboBox ,我一直保持可编辑状态,我想在该 ComboBox 中按下/释放任何键时调用一个名为 search() 的函数?我试过这个,但是当条件为真时,它既不会调用我的函数,也不会调用我在 if() 中编写的工作。

请告诉我如何在通过可编辑组合框从键盘按下键时触发操作,我正在使用 netbeans。

private void cKeyReleased(java.awt.event.KeyEvent evt) {                              

     if(evt.getKeyCode()==KeyEvent.VK_A )
    {
        //DOES NOT EVEN ENTER THIS METHOD WHEN A IS PRESSED.
        try 
         {
             search();      // MY CALL TO FUNCTION
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }

     if(evt.getKeyCode()==KeyEvent.VK_B )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_C )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_D )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_E )
    {
         try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_F )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_G )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_H )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_I )
    {
        try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_J )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_K )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_L )
    {
      try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_M )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_N )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }




     if(evt.getKeyCode()==KeyEvent.VK_O )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_P )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_Q )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_R )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_S )
    {

         try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_T )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }



     if(evt.getKeyCode()==KeyEvent.VK_U )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_V )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }

    if(evt.getKeyCode()==KeyEvent.VK_W )
    {

         try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    } 

    if(evt.getKeyCode()==KeyEvent.VK_X )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }

     if(evt.getKeyCode()==KeyEvent.VK_Y )
    {

         try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }

    }

   if(evt.getKeyCode()==KeyEvent.VK_Z )
    {

         try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }  

     if(evt.getKeyCode()==KeyEvent.VK_1 )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_2 )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }

    }


     if(evt.getKeyCode()==KeyEvent.VK_3 )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_4 )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_5 )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }

    }


     if(evt.getKeyCode()==KeyEvent.VK_6 )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }

    }


     if(evt.getKeyCode()==KeyEvent.VK_7 )
    {
          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }
    }


     if(evt.getKeyCode()==KeyEvent.VK_8 )
    {

          try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }

    }


     if(evt.getKeyCode()==KeyEvent.VK_9 )
    {
         try 
         {
             search();
         } catch (     ClassNotFoundException | SQLException ex) 
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }


    }


     if(evt.getKeyCode()==KeyEvent.VK_0 )
    {
         try 
         {
             search();
         }
         catch (ClassNotFoundException | SQLException ex)
         {
             Logger.getLogger(gui.class.getName()).log(Level.SEVERE, null, ex);
         }

    }


}       

【问题讨论】:

  • JCommboBox 使用编辑器,您应该考虑使用 DocumentListener 而不是 KeyListener
  • 请提供更多信息,让您的答案更清楚!我不知道 Document Listener。
  • i m unaware about Document Listener - 如果您不知道 DocumentListener 是什么,请在论坛或网络上进行一些搜索。您在收到建议后不到 1 分钟发布了该评论。您不可能在一分钟内搜索到网络。您是否看过 Swing 教程,其中有一个部分提供了一个工作示例。您在上一个问题 (stackoverflow.com/a/24084980/131872) 中获得了 Swing 教程的链接。我为您提供了该教程的链接,以便您可以将其用作未来问题的资源。
  • @camickr,你很友好地指导我,我很感激,但恕我直言,我做了我的研究,我是一个初学者,我正在尽我所能从头开始学习 Java!我只是想为文件听众提供一个更好的解释,而不是你为了抢自己而发表的令人愉快的演讲。
  • @user3503308, i did my research - 恕我直言,您不可能在不到一分钟的时间内就使用 DocumentListener 进行研究。提出建议已经 5 小时了。你学到了什么?该建议是否有助于解决问题?

标签: java swing actionlistener jcombobox


【解决方案1】:

我使用了这个,即使是关键监听器也能完成工作,我不需要文档监听器@camickr 相信我,我想要的只是如何使用文档监听器,我仍然很想使用它!我再说一遍,我是 Java 新手,我正在通过阅读问题和答案来开发一个项目,以适应我的要求! 当我说我做了我的研究时,我的意思是我什至在发布我的问题之前就做了。 再次,关于如何使用文档侦听器的小 sn-p 将有很大帮助,因为我正在使用 netbeans,我只想在我的可编辑组合框中键入键时进行函数调用。

import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ComboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.ListCellRenderer;
import javax.swing.text.DateFormatter;


public class Adhoc_JComboBox extends JFrame implements KeyListener{

private static JComboBox combobox; 
String a1,a2,a3;
public static void main(String[] args) {
new Adhoc_JComboBox();
}

private Adhoc_JComboBox(){
String array[]= new String[3];

a1=new String("a1");
a2=new String("a2");
a3=new String("a3");
array[0]= a1;
array[1]= a2;
array[2]= a3;
combobox = new JComboBox(array);
combobox.setEditable(true);
JTextField editor = (JTextField) combobox.getEditor().getEditorComponent();
editor.addKeyListener(this);
setLayout(new FlowLayout());
add(combobox);
pack();
setVisible(true);
}

public void keyTyped(KeyEvent arg0) {
System.out.println("Key Typed " +arg0.getKeyCode());
}

public void keyPressed(KeyEvent arg0) {
System.out.println("Key Pressed " +arg0.getKeyCode());
} 
public void keyReleased(KeyEvent arg0) {
System.out.println("Key Released " +arg0.getKeyCode());}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多