首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java Swing中的自动完成文本框

Java Swing中的自动完成文本框是一种用于在用户输入时自动显示匹配项的组件。在Java Swing中,可以使用JTextField和JList组件来实现自动完成功能。

以下是一个简单的示例代码,展示了如何在Java Swing中实现自动完成文本框:

代码语言:java
复制
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的文本将更新为所选项目。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共49个视频
动力节点-MyBatis框架入门到实战教程
动力节点Java培训
Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
共39个视频
动力节点-Spring框架源码解析视频教程-上
动力节点Java培训
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
共0个视频
动力节点-Spring框架源码解析视频教程-
动力节点Java培训
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
共0个视频
动力节点-Spring框架源码解析视频教程-下
动力节点Java培训
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
共29个视频
【动力节点】JDBC核心技术精讲视频教程-jdbc基础教程
动力节点Java培训
本套视频教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。
共32个视频
动力节点-Maven基础篇之Maven实战入门
动力节点Java培训
Maven这个单词的本意是:专家,内行,读音是['meɪv(ə)n]或['mevn]。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
共22个视频
JavaWeb阶段入门教程-EL表达式+JSP【动力节点】
动力节点Java培训
通过本课程的学习,使大家掌握JSP开发,充分认知JSP在实际项目开发中的重要作用。 jsp从表现上看更像是前端组件,只是传统的html代码加入了java脚本的综合操作。但是在本质上,jsp同时又是servlet。
共17个视频
动力节点-JDK动态代理(AOP)使用及实现原理分析
动力节点Java培训
动态代理是使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中增强自己的功能代码。
领券