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

我想在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();

}

});

}

}

以上是 Java是否可以使用jtextfield和Jlist具有自动完成功能? 的全部内容, 来源链接: utcz.com/qa/411026.html

回到顶部