Java Swing là một phần của Java Foundation Classes (JFC) và được sử dụng để tạo giao diện người dùng đồ họa (GUI) trong Java. Một trong những thành phần cơ bản của Swing là JTextField. JTextField là một trường nhập liệu một dòng, cho phép người dùng nhập và chỉnh sửa văn bản, thường được sử dụng trong các biểu mẫu, hộp thoại, và các giao diện yêu cầu nhập liệu văn bản.
Cơ bản về JTextField
JTextField là một thành phần đơn giản nhưng rất hữu ích trong Swing. Để tạo một JTextField, bạn chỉ cần sử dụng cú pháp sau:
JTextField textField = new JTextField();
Bạn cũng có thể tạo một JTextField với văn bản mặc định và số cột xác định:
JTextField textField = new JTextField("Nhập văn bản ở đây", 20);
Tạo và sử dụng JTextField
Để tạo một JTextField trong ứng dụng Swing, bạn cần thực hiện các bước sau:
- Khởi tạo JFrame.
- Tạo JTextField.
- Thêm JTextField vào JFrame.
Bạn có thể thiết lập các thuộc tính như văn bản, số cột và trạng thái có thể chỉnh sửa của JTextField:
textField.setText("Văn bản mặc định"); textField.setColumns(20); textField.setEditable(true);
Ví dụ mã nguồn cho một JFrame chứa JTextField:
JFrame frame = new JFrame("Ví dụ JTextField"); JTextField textField = new JTextField("Nhập văn bản ở đây", 20); frame.add(textField); frame.setSize(300, 100); frame.setVisible(true);
Xử lý sự kiện với JTextField
Trong Swing, xử lý sự kiện là một phần quan trọng để làm cho ứng dụng trở nên tương tác. Bạn có thể thêm ActionListener vào JTextField để xử lý sự kiện khi người dùng nhấn Enter:
textField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Văn bản: " + textField.getText()); } });
Ví dụ đơn giản sử dụng lambda expression:
textField.addActionListener(e -> System.out.println("Văn bản: " + textField.getText()));
Tùy chỉnh giao diện JTextField
Bạn có thể tùy chỉnh phông chữ, màu sắc và căn chỉnh của JTextField để phù hợp với giao diện người dùng của bạn:
textField.setFont(new Font("Serif", Font.PLAIN, 14)); textField.setForeground(Color.BLUE); textField.setHorizontalAlignment(JTextField.CENTER);
Ngoài ra, có thể thiết lập gợi ý (tool tip) cho JTextField:
textField.setToolTipText("Nhập tên của bạn");
Ví dụ mã nguồn tùy chỉnh:
textField.setFont(new Font("Arial", Font.BOLD, 16)); textField.setForeground(Color.RED); textField.setHorizontalAlignment(JTextField.RIGHT); textField.setToolTipText("Nhập văn bản tại đây");
Các tính năng nâng cao của JTextField
JTextField hỗ trợ nhiều tính năng nâng cao như sử dụng Document để quản lý nội dung văn bản và thực hiện kiểm tra tính hợp lệ của đầu vào:
Document doc = textField.getDocument(); textField.getDocument().addDocumentListener(new DocumentListener() { public void insertUpdate(DocumentEvent e) { validateInput(); } public void removeUpdate(DocumentEvent e) { validateInput(); } public void changedUpdate(DocumentEvent e) { validateInput(); } private void validateInput() { String text = textField.getText(); if (text.matches("\\d+")) { textField.setBackground(Color.WHITE); } else { textField.setBackground(Color.PINK); } } });
Các trường hợp sử dụng phổ biến và ví dụ
- Ví dụ 1: Biểu mẫu đơn giản với JTextField:
JLabel label = new JLabel("Tên:"); JTextField textField = new JTextField(20); JPanel panel = new JPanel(); panel.add(label); panel.add(textField);
- Ví dụ 2: JTextField với kiểm tra tính hợp lệ đầu vào:
JTextField textField = new JTextField(20); textField.getDocument().addDocumentListener(new DocumentListener() { public void insertUpdate(DocumentEvent e) { validateInput(); } public void removeUpdate(DocumentEvent e) { validateInput(); } public void changedUpdate(DocumentEvent e) { validateInput(); } private void validateInput() { String text = textField.getText(); if (text.matches("\\d+")) { textField.setBackground(Color.WHITE); } else { textField.setBackground(Color.PINK); } } });
- Ví dụ 3: Triển khai thanh tìm kiếm sử dụng JTextField:
JTextField searchField = new JTextField("Tìm kiếm...", 20); searchField.addActionListener(e -> performSearch(searchField.getText()));
Kết luận
JTextField là một thành phần quan trọng và hữu ích trong Java Swing. Bằng cách hiểu rõ và áp dụng các tính năng của JTextField, bạn có thể tạo ra các ứng dụng GUI mạnh mẽ và linh hoạt. Hãy thử nghiệm và khám phá thêm về JTextField để tận dụng tối đa công cụ này trong các dự án của bạn.