Menghadkan Input JTextField kepada Integer
Tugas mengehadkan input JTextField kepada hanya menerima integer positif adalah keperluan yang sering dihadapi, namun sekatan melaksanakan sekatan ini boleh menimbulkan cabaran. Menggunakan KeyListener untuk tujuan ini, seperti yang dicuba pada mulanya, mempunyai beberapa kelemahan.
Kelemahan Menggunakan KeyListener:
The Penyelesaian: DocumentFilter
Pendekatan yang lebih baik ialah menggunakan Penapis Dokumen. Komponen Swing ini membolehkan anda menapis kandungan komponen teks, memberikan kawalan yang tepat ke atas perkara yang boleh dimasukkan.
Cara ia Berfungsi:
Penapis Dokumen membolehkan anda untuk periksa sebarang perubahan masuk pada kandungan komponen teks. Dengan menyemak sama ada rentetan yang diubah suai mewakili integer yang sah, anda boleh sama ada menerima atau menolak perubahan.
Contoh Pelaksanaan:
Coretan kod berikut menunjukkan cara melaksanakan DocumentFilter yang mengehadkan input kepada integer:
import javax.swing.text.DocumentFilter; import javax.swing.text.BadLocationException; public class MyIntFilter extends DocumentFilter { @Override public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { Document doc = fb.getDocument(); StringBuilder sb = new StringBuilder(); sb.append(doc.getText(0, doc.getLength())); sb.insert(offset, string); if (test(sb.toString())) { super.insertString(fb, offset, string, attr); } else { // Handle invalid input, e.g., display an error message } } private boolean test(String text) { try { Integer.parseInt(text); return true; } catch (NumberFormatException e) { return false; } } }
Dengan melampirkan ini DocumentFilter ke JTextField anda, anda boleh memastikan bahawa hanya integer yang sah dibenarkan sebagai input.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengehadkan JTextField untuk Menerima Integer Positif Sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!