Rumah > Java > javaTutorial > Bagaimanakah saya boleh melaksanakan fungsi autolengkap dalam Java menggunakan JTextfield dan JList?

Bagaimanakah saya boleh melaksanakan fungsi autolengkap dalam Java menggunakan JTextfield dan JList?

Susan Sarandon
Lepaskan: 2024-11-17 13:56:02
asal
639 orang telah melayarinya

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

Fungsi AutoLengkap dengan JTextfield dan JList

Ciri AutoLengkap meningkatkan pengalaman pengguna dengan mengemukakan cadangan berdasarkan input separa. Untuk program autolengkap menggunakan JTextfield dan JList, adalah penting untuk melaksanakan mekanisme yang menyediakan cadangan semasa pengguna menaip.

Algoritma

  1. Isih ArrayList: Untuk prestasi optimum, susun senarai cadangan sebelum sebarang pemprosesan. Ini mengurangkan masa carian apabila pengguna menaip aksara.
  2. Laksanakan Carian Bertambah: Semasa pengguna menaip, program mencari rentetan dalam senarai yang sepadan dengan input semasa.
  3. Paparan Cadangan Kawalan: Berdasarkan algoritma yang digunakan untuk carian tambahan, program boleh memaparkan cadangan yang berkaitan kepada pengguna.

Pelaksanaan Kod

Pertimbangkan coretan kod Java berikut yang menunjukkan kefungsian autolengkap:

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();
            }
        });
    }
}
Salin selepas log masuk

Hasil

Kod ini akan mencipta JFrame dengan dua komponen: JTextfield dan JList. Semasa anda menaip dalam JTextfield, program akan mencari cadangan dalam senarai rentetan dan memaparkannya dalam JList.

Penyesuaian

Anda boleh menyesuaikan tingkah laku ciri autolengkap berdasarkan keperluan anda, seperti mengubah suai algoritma pengisihan, melaraskan format paparan cadangan atau menetapkan bilangan maksimum cadangan kepada tunjukkan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan fungsi autolengkap dalam Java menggunakan JTextfield dan JList?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan