当前位置: 首页 > 面试题库 >

Java是否可以使用jtextfield和Jlist具有自动完成功能?

司徒焕
2023-03-14
问题内容

我想在Java中创建一个自动完成程序,当用户在中键入字符/字符串时,该程序应立即提供建议列表JTextfield。问题是我对如何做感到困惑。

有人可以提供关于上述问题的想法或样本吗?


问题答案:

1)你必须在使用之前对数组进行排序以获得更好的性能…

2)正如我提到的,你必须接受这两个方面

3)不要忘记为这些组件的更好和最好的工作设置初始值

简单输出

代码

import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;

public class AutoCompleteTextField {

    private JFrame frame;
    private ArrayList<String> listSomeString = new ArrayList<String>();
    private Java2sAutoTextField someTextField = new Java2sAutoTextField(listSomeString);
    private ArrayList<String> listSomeAnotherString = new ArrayList<String>();
    private Java2sAutoComboBox someComboBox = new Java2sAutoComboBox(listSomeAnotherString);

    public AutoCompleteTextField() {
        listSomeString.add("-");
        listSomeString.add("Snowboarding");
        listSomeString.add("Rowing");
        listSomeString.add("Knitting");
        listSomeString.add("Speed reading");
        listSomeString.add("Pool");
        listSomeString.add("None of the above");
//
        listSomeAnotherString.add("-");
        listSomeAnotherString.add("XxxZxx Snowboarding");
        listSomeAnotherString.add("AaaBbb Rowing");
        listSomeAnotherString.add("CccDdd Knitting");
        listSomeAnotherString.add("Eee Fff Speed reading");
        listSomeAnotherString.add("Eee Fff Pool");
        listSomeAnotherString.add("Eee Fff None of the above");
//
        someTextField.setFont(new Font("Serif", Font.BOLD, 16));
        someTextField.setForeground(Color.black);
        someTextField.setBackground(Color.orange);
        someTextField.setName("someTextField");
        someTextField.setDataList(listSomeString);
//
        someComboBox.setPrototypeDisplayValue("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
        someComboBox.setFont(new Font("Serif", Font.BOLD, 16));
        someComboBox.setForeground(Color.black);
        someComboBox.setBackground(Color.YELLOW);
        someComboBox.getEditor().selectAll();
        someComboBox.getEditor().getEditorComponent().setBackground(Color.YELLOW);
        ((JTextField) someComboBox.getEditor().getEditorComponent()).setDisabledTextColor(Color.black);
        someComboBox.setName("someComboBox");
        someComboBox.setDataList(listSomeAnotherString);
//
        frame = new JFrame();
        frame.setLayout(new GridLayout(0, 1, 10, 10));
        frame.add(someTextField);
        frame.add(someComboBox);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocation(100, 100);
        frame.pack();
        frame.setVisible(true);
//
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                someTextField.setText("-");
                someComboBox.getEditor().setItem(0);
                someComboBox.getEditor().selectAll();
                someTextField.grabFocus();
                someTextField.requestFocus();
                someTextField.setText(someTextField.getText());
                someTextField.selectAll();
            }
        });

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                AutoCompleteTextField aCTF = new AutoCompleteTextField();
            }
        });
    }
}


 类似资料:
  • 我想实现一个自动完成功能。目前我有一个包含JTextField的JPanel,当用户开始键入时,会出现一个包含几个选项的autocomplete(JPopupMenu)。 问题是它占用了文本字段的焦点,用户无法再键入。当我将焦点返回到文本字段时,用户不再有选项之间的导航(使用向上和向下按钮)。此外,对菜单的焦点不允许我截取它的KeyListener(不知道为什么),并且当我尝试处理文本字段端的输入

  • 问题内容: 在该线程中,我找到了一种在中实现功能的方法(并且,但与此无关)。 尝试在中实施此功能时,会引发一些异常。以下代码将演示该问题。它是如此简单,与我使用的方式非常相似,效果很好。 有人可以帮我找到解决方案吗? 下面的代码: ( 请注意,我使用) 这是错误消息我得到: ( 这是一个有点长:d ) 问题答案: 您的代码中没有涉及。我认为应该读这样的东西… 如果你想绑定到(以便文本字段将更新的选

  • 我在netbeans中创建了一个桌面应用程序,到昨天为止还很好,但现在需求发生了变化,客户机希望所有的JTextField都是自动完成的,源码是databse,我搜索并试图找到任何适合netbeans的例子,但我无法找到这样的东西,所以请帮助我如何在netbeans中实现自动完成的东西?请帮忙

  • 问题内容: 我正在尝试实现自动补全功能,但是找不到在Swift中可用的示例。下面,我打算转换Ray Wenderlich的自动完成教程 和2010年的示例代码。最后,代码进行了编译,但是没有显示包含可能完成的表格,而且我没有经验来了解为什么它未被隐藏shouldChangeCharactersInRange。 问题答案: 用下面的内容替换您的函数内容。希望对您有帮助。

  • 我有一个jTextfield,必须从JList获取输入。在FocusGaut属性上,jList应该正好出现在jTextfield下面,而在FocusLost属性上,jList应该消失。我已经做了一些编码,但我得到一个问题在它。在FocusGaut属性中,会出现jList,但单击它后,它会转到其他jTextfield的背面,该背面位于前一个TextField的下方。以下是我的代码:

  • 问题内容: Java中是否像C ++中一样有变量类型? 一个例子: 我知道Java中有一个增强的for循环,但是有自动吗?如果不是,是否有这样做的技巧?我指的是C ++ 11中的新功能 问题答案: 在问题被 编辑 之前回答: 不,Java中没有变量类型。可以通过以下方式实现相同的循环: Java具有局部变量,其范围在定义它们的块内。 _与C和C 类似,但是没有auto或register关键字。 但