2014-06-16 39 views
0

我有一個名爲c的JComboBox,我一直保持可編輯狀態,只要在該ComboBox中按下/釋放任何鍵時,我想調用一個名爲search()的函數?我試過這個,但是這既不會調用我的函數,也不會在if()條件成立時寫入我的工作。編輯JcomboBox操作事件上發佈的鍵不工作

請讓我知道如何通過可編輯組合框從鍵盤按下某個按鍵時觸發一個動作,我使用的是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); 
     } 

    } 


}  
+0

JCommboBox使用一個編輯器,你應該考慮使用的DocumentListener而不是KeyListener的 – MadProgrammer

+0

的,請提供更多資訊,讓您的回答清楚!我沒有意識到Document Listener。 – user3503308

+0

'我不知道文檔監聽器' - 如果你不知道什麼是文檔監聽器,那麼做一些搜索論壇或網頁。您在收到建議後不到1分鐘就發佈該評論。你不可能在一分鐘內搜索到網頁。你甚至看過Swing教程,它有一個提供了一個工作示例的部分。您在最後一個問題中獲得了Swing教程的鏈接(http://stackoverflow.com/a/24084980/131872)。我給了你一個指南的鏈接,所以你可以用它作爲未來問題的資源。 – camickr

回答

0

我用這一點,連按鍵偵聽器做的工作,我也沒必要文檔偵聽@camickr相信我,所有我想要的是如何使用文檔偵聽,我還是喜歡使用它!我重複我新的Java和我正在開發一個項目通過閱讀問題和答案塑造他們,以適應我的要求! 當我說我做了我的研究,我的意思是我甚至在發佈我的問題之前做過它,先生。 再次如何使用文檔偵聽器的一個小片段會有很大的幫助,因爲我使用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());}}