Java/Swing实现Qt中的LineEdit中的QCompleter,实现文本输入框(JTextField)的自动补全/智能提示/输入猜想。

这篇博客介绍了如何在Java/Swing中模仿Qt的LineEdit的QCompleter功能,实现JTextField的自动补全和智能提示。通过扩展JTextField组件并结合QComboBox的下拉框,提供了添加、删除字符串库的方法,以及自动根据输入文本筛选匹配项。文章还展示了最终效果和关键实现步骤。
摘要由CSDN通过智能技术生成

Java/Swing实现Qt中的LineEdit中的QCompleter,实现文本输入框(JTextField)的自动补全/智能提示/输入猜想。

百度搜索的时候,在搜索框中输入一些内容,后台会智能计算出一些可能的搜索内容,方便了用户。

而在Qt搭建C端界面/上位机的时候,也有一个组件,实现了自动补齐的功能。这是根据文本匹配,通过输入的内容和库中字符串进行匹配,并在下面列出候选框中的内容。

Java的界面框架Swing并没有类似的功能。本文扩展JTextField组件,即在JTextField文本输入框中,组合QComboBox的下拉框,实现类似的功能。并提供简易的添加/删除字符串库,以及常用功能的接口。

  • 最终效果图
    在这里插入图片描述
  • 主要实现功能:
    • 点击文本框,弹出下拉框,并显示所有库中的字符串。
    • 弹出后,上下键更改选中框的选中项。
    • 回车/点击弹出框,会将选中的内容放置到输入框中。
    • 使用方法和JTextField一样(因为是继承的)
    • 输入文本后,会自动根据文本在库中筛选结果,并放到下拉框中供选择。
  • api
    • addItem(String[] str),addItem(String str),addItem(Array strings)等方法均可添加字符串库。
    • removeItem(String str)移除字符串库中的值。
  • 实现细节:
    • 将ComboBox的getPreferredSize().height设置成0,这样,就只有下拉框了。
    • ComboBox添加到JTextField的BORDER.SOUTH。
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class ComboText extends JTextField {
   
    private JComboBox<String> comboBox;
    private Set<String> itemsSet = new HashSet<>(30);

    public ComboText() {
   
        setVisible(true);
        initComboBox();
        initTextField();
    }

    //当鼠标点击聚焦的时候,会弹出来。
    @Override
    public void requestFocus() {
   
        super.requestFocus();
        if (getText() == null || getText().equals(""))
            setText("");
        setText(getText());
    }

    public void addItem(String str) {
   
        //判断一下是否重复
        if (itemsSet.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值