Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Mencegah Nilai Negatif atau Sifar dalam Sel JTable?

Bagaimanakah Saya Boleh Mencegah Nilai Negatif atau Sifar dalam Sel JTable?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 13:17:02462semak imbas

How Can I Prevent Negative or Zero Values in JTable Cells?

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!

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