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
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(); } }); } }
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!