1

Swing アプリケーションに autocompleteDecorator を実装しています。私のコードはこのようなものです。

public inventory_purchase() {
    initComponents();
    AutoCompleteDecorator.decorate(this.combo);
}

public void autocomplete(){
    try{
        Class.forName("org.apache.derby.jdbc.ClientDriver");
        Connection conn= DriverManager.getConnection("jdbc:derby://localhost:1527/C:/jpublisher/pub", "APP", "app");
        Statement stmt = conn.createStatement();
        String query="SELECT * FROM INVENTORY";
        ResultSet rs = stmt.executeQuery(query);
        while(rs.next()){
            combo.addItem(rs.getString("CATEGORY"));
        }
    }
    catch ( ClassNotFoundException | SQLException ex) {
        JOptionPane.showMessageDialog(null, "Data cannot be loaded. Error!!");
    }   

}

このオートコンプリート デコレータは、この関数を

formWindowOpened(java.awt.event.WindowEvent evt){autocomplete();} 

キーリスナーでこのオートコンプリートを使用するにはどうすればよいですか? お気に入り :

private void comboKeyReleased(java.awt.event.KeyEvent evt) {
    autocomplete();
}

データベースからオートコンプリートを使用する他の簡単なプロセスはありますか?

4

1 に答える 1

1

おそらくKey Bindingsを使用したいと思うでしょう。簡単な例を次に示します。

import java.awt.event.*;
import javax.swing.*;

public class KeyBindings extends Box{
    public KeyBindings(){
        super(BoxLayout.Y_AXIS);

        final JLabel text = new JLabel("Original Text");
        add(text);

        Action action = new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                text.setText("New Text");
            }};
         String keyStrokeAndKey = "control H";
         KeyStroke keyStroke = KeyStroke.getKeyStroke(keyStrokeAndKey);
         getInputMap().put(keyStroke, keyStrokeAndKey);
         getActionMap().put(keyStrokeAndKey, action);
    }


    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new KeyBindings());
        frame.pack();
        frame.setVisible(true);
    }
}
于 2012-12-19T21:03:40.353 に答える