Walaupun intuitif, menggunakan pendengar utama untuk mengesahkan input berangka dalam JTextField adalah tidak mencukupi. Sebaliknya, pendekatan yang lebih komprehensif ialah menggunakan Penapis Dokumen.
Penapis Dokumen memantau perubahan pada dokumen, memberikan kawalan yang lebih besar ke atas pengesahan input. Ia membolehkan anda:
Contoh pelaksanaan MyIntFilter menggunakan DocumentFilter:
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 { // warn the user and don't allow the insert } } private boolean test(String text) { try { Integer.parseInt(text); return true; } catch (NumberFormatException e) { return false; } } ... // Other overridden methods for replace and remove }
Oleh menggunakan DocumentFilter, anda boleh mengehadkan input JTextField dengan berkesan kepada integer, memastikan hanya data yang sah dimasukkan. Ia merupakan pendekatan yang teguh dan boleh dipercayai yang menangani batasan pendengar utama.
Atas ialah kandungan terperinci Bagaimanakah DocumentFilter Boleh Mengehadkan Input JTextField kepada Integer dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!