Mencegah Input Tidak Sah dalam Sel JTable
Komponen JTable menyediakan pengesahan terbina dalam untuk jenis data tertentu, seperti integer. Walau bagaimanapun, ia tidak mengendalikan nilai negatif atau sifar secara lalai. Untuk melaksanakan peraturan pengesahan tersuai, anda boleh mencipta kelas editor sel tersuai.
Penyelesaian:
Daripada menggunakan TableModel yang mengesahkan input, buat subkelas DefaultCellEditor sebagai berikut:
<code class="java">private static class PositiveIntegerCellEditor extends DefaultCellEditor { private static final Border red = new LineBorder(Color.red); private static final Border black = new LineBorder(Color.black); private JTextField textField; public PositiveIntegerCellEditor(JTextField textField) { super(textField); this.textField = textField; textField.setHorizontalAlignment(JTextField.RIGHT); // Align right for positive numbers } @Override public boolean stopCellEditing() { try { int value = Integer.valueOf(textField.getText()); if (value < 0) { throw new NumberFormatException(); } } catch (NumberFormatException e) { textField.setBorder(red); // Highlight invalid input return false; } textField.setBorder(black); // Reset border for valid input return super.stopCellEditing(); } }</code>
Editor tersuai ini menyemak input pengguna dan memaparkan sempadan merah untuk nilai tidak sah (negatif atau sifar).
Pelaksanaan:
Segera editor tersuai dan tetapkannya untuk lajur yang dikehendaki:
<code class="java">JTextField integerField = new JTextField(); PositiveIntegerCellEditor integerEditor = new PositiveIntegerCellEditor(integerField); table.getColumnModel().getColumn(columnIndex).setCellEditor(integerEditor);</code>
Penyelesaian ini meniru gelagat editor lalai untuk input integer, menolak nilai negatif atau sifar dan menyerlahkan sel yang tidak sah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencegah Nilai Negatif atau Sifar dalam Sel JTable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!