Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengesahkan Input Integer Tidak Positif dalam Sel JTable?

Bagaimana untuk Mengesahkan Input Integer Tidak Positif dalam Sel JTable?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 07:08:29979semak imbas

How to Validate Non-Positive Integer Input in JTable Cells?

Pengesahan Input Tidak Sah dalam Sel JTable

Soalan:

Pertimbangkan JTable di mana lajur jenis kelas ditentukan sebagai Integer menggunakan kaedah getColumnClass(). Ayunan secara automatik menandakan dan menolak input tidak sah (cth., nilai berganda). Walau bagaimanapun, pengesahan tersuai untuk input integer bukan positif (negatif atau sifar) dikehendaki, meniru gelagat lalai untuk input integer tidak sah.

Jawapan:

Tidak seperti Swing's semakan lalai, yang menggunakan introspeksi untuk mengesan pengecualian, editor tersuai boleh digunakan untuk pengesahan khusus. Sebagai contoh, PositiveIntegerCellEditor boleh dibuat sebagai subkelas DefaultCellEditor untuk menyelesaikan tugas.

Dalam kaedah stopCellEditing(), percubaan untuk menukar input kepada Integer dibuat. Jika nilainya bukan positif, NumberFormatException dilemparkan, menyebabkan textField digariskan dalam warna merah, menunjukkan input tidak sah.

<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;
        this.textField.setHorizontalAlignment(JTextField.RIGHT);
    }

    @Override
    public boolean stopCellEditing() {
        try {
            int v = Integer.valueOf(textField.getText());
            if (v < 0) {
                throw new NumberFormatException();
            }
        } catch (NumberFormatException e) {
            textField.setBorder(red);
            return false;
        }
        return super.stopCellEditing();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
        Object value, boolean isSelected, int row, int column) {
        textField.setBorder(black);
        return super.getTableCellEditorComponent(
            table, value, isSelected, row, column);
    }
}</code>

Apabila sel dengan input tidak sah diklik, PositiveIntegerCellEditor akan menjadi diaktifkan, dan apabila keluar dari mod edit (cth., dengan menekan Enter atau Tab), kaedah stopCellEditing() akan cuba menukar input. Jika penukaran gagal (iaitu, input bukan positif), sempadan textField akan ditetapkan kepada merah dan fokus akan kekal pada sel.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Input Integer Tidak Positif dalam Sel JTable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn