Java Swing中的自动完成文本框是一种用于在用户输入时自动显示匹配项的组件。在Java Swing中,可以使用JTextField和JList组件来实现自动完成功能。
以下是一个简单的示例代码,展示了如何在Java Swing中实现自动完成文本框:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class AutoCompleteTextField {
public static void main(String[] args) {
JFrame frame = new JFrame("Auto Complete Text Field");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
JTextField textField = new JTextField();
JList<String> list = new JList<>(new DefaultListModel<>());
// Add some sample items to the list
DefaultListModel<String> model = (DefaultListModel<String>) list.getModel();
model.addElement("Apple");
model.addElement("Banana");
model.addElement("Cherry");
model.addElement("Date");
model.addElement("Eggplant");
// Add a key listener to the text field to update the list as the user types
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
String text = textField.getText();
if (text.isEmpty()) {
list.setVisible(false);
return;
}
list.setVisible(true);
DefaultListModel<String> model = (DefaultListModel<String>) list.getModel();
model.clear();
// Filter the items in the list based on the text in the text field
for (int i = 0; i< model.getSize(); i++) {
String item = model.getElementAt(i);
if (item.toLowerCase().contains(text.toLowerCase())) {
model.addElement(item);
}
}
}
});
// Add a mouse listener to the list to update the text field when the user selects an item
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
int index = list.locationToIndex(e.getPoint());
if (index != -1) {
String item = list.getModel().getElementAt(index);
textField.setText(item);
list.setVisible(false);
}
}
}
});
// Add the text field and list to a panel and add the panel to the frame
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(textField, BorderLayout.NORTH);
panel.add(list, BorderLayout.SOUTH);
frame.add(panel);
frame.setVisible(true);
}
}
这个示例代码创建了一个包含JTextField和JList的简单窗口。当用户在JTextField中输入文本时,JList会根据输入的文本过滤其中的项目,并显示匹配的项目。当用户单击JList中的项目时,JTextField的文本将更新为所选项目。
领取专属 10元无门槛券
手把手带您无忧上云