Maison > Java > javaDidacticiel > Comment puis-je implémenter la fonctionnalité de saisie semi-automatique dans un JTextfield à l'aide d'une JList en Java ?

Comment puis-je implémenter la fonctionnalité de saisie semi-automatique dans un JTextfield à l'aide d'une JList en Java ?

Mary-Kate Olsen
Libérer: 2024-11-17 11:56:02
original
946 Les gens l'ont consulté

How can I implement auto-complete functionality in a JTextfield using a JList in Java?

Suggestion de saisie semi-automatique pour JTextfield à l'aide de JList

En Java, implémenter une fonctionnalité de saisie semi-automatique pour un JTextfield est possible en utilisant une JList pour afficher options de suggestion lorsque l'utilisateur saisit des caractères. Voici comment procéder :

  1. Triez votre tableau : Pour de meilleures performances, il est recommandé de trier la liste des chaînes de suggestion avant de les utiliser.
  2. Instanciation de classe facultative : Dans l'exemple fourni, deux classes sont utilisées : Java2sAutoTextField et Java2sAutoComboBox. Ces classes gèrent la fonctionnalité de saisie semi-automatique.
  3. Valeur initiale : La définition d'une valeur initiale pour le JTextfield améliore l'expérience utilisateur.

Exemple de sortie :

[Image des suggestions de saisie semi-automatique affichée dans un JTextfield sous l'entrée field]

Exemple de code :

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

public class AutoCompleteTextField {

    private JFrame frame;
    private ArrayList<String> listSomeString = new ArrayList<>();
    private Java2sAutoTextField someTextField = new Java2sAutoTextField(listSomeString);
    private ArrayList<String> listSomeAnotherString = new ArrayList<>();
    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");

        // Configure JTextfield
        someTextField.setFont(new Font("Serif", Font.BOLD, 16));
        someTextField.setForeground(Color.black);
        someTextField.setBackground(Color.orange);
        someTextField.setName("someTextField");
        someTextField.setDataList(listSomeString);

        // Configure JList
        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 JFrame
        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);

        // Set initial focus
        someTextField.grabFocus();
        someTextField.requestFocus();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                AutoCompleteTextField aCTF = new AutoCompleteTextField();
            }
        });
    }
}
Copier après la connexion

En suivant cette approche, vous pouvez intégrer efficacement des suggestions de saisie semi-automatique dans votre application Java à l'aide d'un JTextfield et d'une JList.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal