>Java >java지도 시간 >JTextfield 및 JList를 사용하여 Java에서 자동 완성 기능을 어떻게 구현합니까?

JTextfield 및 JList를 사용하여 Java에서 자동 완성 기능을 어떻게 구현합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-17 13:56:02632검색

How can I implement autocomplete functionality in Java using JTextfield and JList?

JTextfield 및 JList의 자동 완성 기능

자동 완성 기능은 부분 입력을 기반으로 제안을 제시하여 사용자 경험을 향상시킵니다. JTextfield와 JList를 사용하는 자동 완성 프로그램의 경우 사용자가 입력할 때 제안을 제공하는 메커니즘을 구현하는 것이 필수적입니다.

알고리즘

  1. Sort ArrayList: 최적의 성능을 위해 처리하기 전에 제안 목록을 정렬하세요. 이렇게 하면 사용자가 문자를 입력할 때 검색 시간이 줄어듭니다.
  2. 증분 검색 구현: 사용자가 입력하면 프로그램은 목록에서 현재 입력과 일치하는 문자열을 검색합니다.
  3. 제어 제안 표시: 증분 검색에 사용되는 알고리즘을 기반으로 프로그램은 사용자에게 관련 제안을 표시할 수 있습니다.

코드 구현

자동 완성 기능을 보여주는 다음 Java 코드 조각을 고려하세요.

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

public class AutoCompleteTextField {

    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() {
        
        // Populate suggestion lists
        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");
        
        // Initialize and customize components
        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);
        
        // Create frame and add components
        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);
 
        // Focus and select text field
        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();
            }
        });
    }
}

Result

이 코드는 JTextfield라는 두 가지 구성 요소로 JFrame을 생성합니다. 그리고 JList. JTextfield에 입력하면 프로그램이 문자열 목록에서 제안 사항을 검색하여 JList에 표시합니다.

사용자 정의

동작을 사용자 정의할 수 있습니다. 정렬 알고리즘 수정, 제안 표시 형식 조정, 표시할 최대 제안 수 설정 등 필요에 따른 자동 완성 기능입니다.

위 내용은 JTextfield 및 JList를 사용하여 Java에서 자동 완성 기능을 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.