Rumah > Java > javaTutorial > teks badan

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

Mary-Kate Olsen
Lepaskan: 2024-10-28 13:17:02
asal
564 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan