2016-11-24 7 views
1

私は自動テキストフィールドを提案しようとしています。私はテキストフィールドに入力していた場合それは遅延つのキーであり、1つのキー下旬示唆**1つのkeyPressedを修正するには、Javaスイングが遅れましたか?

私は思いますlist.Whenにそれに応じて、それが唯一の「AA」として照会しているAAAを入力して提案していますそれは代わりにKeyAdapterクラスのkeyPressed方法の使用keyReleased AAA

private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JPanel panel = new JPanel(); 
    panel.setBounds(10, 11, 414, 239); 
    frame.getContentPane().add(panel); 
    panel.setLayout(null); 

    textField = new JTextField(); 
    textField.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyPressed(KeyEvent arg0) { 

      try { 

       addListItem(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 
    textField.setBounds(71, 24, 86, 20); 
    panel.add(textField); 
    textField.setColumns(10); 

    list = new JList<String>(); 

    list.setBounds(71, 55, 86, 97); 
    list.setVisible(false); 
    list.getScrollableTracksViewportHeight(); 

    panel.add(list); 
} 

public void addListItem() throws Exception { 

    list.setVisible(true); 

    Class.forName("com.mysql.jdbc.Driver"); 
    c = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentdemo", "root", "root"); 
    ps = c.prepareStatement(
      "SELECT stud_name FROM student_info where stud_name like '" + textField.getText().trim() + "%' "); 
    ResultSet s = ps.executeQuery(); 

    model = new DefaultListModel<String>(); 
    while (s.next()) { 
     model.addElement(s.getString("stud_name")); 
     System.out.println(s.getString("stud_name")); 

    } 
    list.setModel(model); 

} 
+0

'keyReleased'を使用しますか? – Berger

+0

私はkeyReleasedで何を書くべきですか? @Berger – Nilay

+0

'keyReleased'を' keyPressed'の代わりに使用してください。 – Berger

答えて

0

として照会しますAAA(余分なキーを押す)した後、任意のキーを押します。

+0

ありがとうございました。 。私がテキストフィールドをクリアしても、それでも私は記入済みのリストを表示します。 – Nilay

+0

これは、backspaceキーを押してテキストボックスをクリアしたときにkeyPressedイベントが呼び出され、リストから項目を削除するロジックがないためです。私は、バックスペースキーを押してロジックを削除することをお勧めします。次のようなものがあります。 public void keyPressed(KeyEvent arg0){ if(arg0.getKeyCode()== KeyEvent.VK_BACK_SPACE){ //リストからアイテムを削除します。 – vvtx

+0

ありがとう、私はテキストフィールドが空であるかどうかをチェックして解決しました。 – Nilay

関連する問題