(JTextAreaからの)ユーザーからのテキスト入力を取得し、既存のリストに基づいて自動補完を使用したいと思います。JTextAreaにKeyEventListenerを使用し、Tabを使用してリストから単語を自動補完する方法
など。ユーザーは 'London Vict'と入力してTabキーを押すとロンドンビクトリア(これはリストに含まれる)に入力されます。
私は、ユーザーのテキストを取り戻すのに苦労しています。私はJTextAreaにKeyEventListenerを追加しようとしましたが、運がありませんでした。
以下のコードを見つけてください:
package Main;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.JTextArea;
public class View extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
Map.Entry<String, List<Integer> > entry = new MyEntry<String, List<Integer> >("London Victoria", new ArrayList<Integer>(Arrays.asList(1, 2)));
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
View frame = new View();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public View() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JTextArea StationDetails = new JTextArea();
StationDetails.setText("Enter Undergound Name: ");
StationDetails.setBounds(35, 19, 382, 232);
//StationDetails.getDocument().addDocumentListener(new DocumentListener);
contentPane.add(StationDetails);
}
final class MyEntry<K, V> implements Map.Entry<K, V> {
private final K key;
private V value;
public MyEntry(K key, V value) {
this.key = key;
this.value = value;
}
@Override
public K getKey() {
return key;
}
@Override
public V getValue() {
return value;
}
@Override
public V setValue(V value) {
V old = this.value;
this.value = value;
return old;
}
}
}
すべての局名が含まれているリストは、「エントリ」は任意の助けすべての
キーイベントリスナーと何か運がないのはどういう意味ですか? KeyMapの作成を見たいかもしれませんが、イベントリスナーと似たようなことがありますが、おそらくもっとうまくいくでしょう。 – matt