Rumah > Java > javaTutorial > Bagaimana untuk Mengesahkan Input Sel JTable untuk Nilai Integer Tidak Positif?

Bagaimana untuk Mengesahkan Input Sel JTable untuk Nilai Integer Tidak Positif?

DDD
Lepaskan: 2024-10-26 13:35:02
asal
664 orang telah melayarinya

How to Validate JTable Cell Input for Non-Positive Integer Values?

Cara Mengesahkan Input Sel JTable untuk Nilai Tidak Sah

Apabila mentakrifkan jenis kelas lajur JTable sebagai subkelas nombor tertentu, Swing secara automatik menolak pengguna input yang tidak sesuai dengan jenisnya. Contohnya, jika lajur ditakrifkan sebagai Integer.class, nilai berganda ditolak.

Untuk mencapai kesan yang sama untuk nilai bukan positif, kaedah setValueAt boleh ditindih dalam model jadual. Walau bagaimanapun, pendekatan ini sahaja tidak memberikan maklum balas visual kepada pengguna.

Penyelesaian yang lebih lengkap melibatkan penggunaan editor sel tersuai. Satu editor sedemikian ialah PositiveIntegerCellEditor, yang memanjangkan DefaultCellEditor dan mengatasi kaedah stopCellEditing untuk menyemak nilai negatif atau sifar. Jika nilai tidak sah dikesan, editor menetapkan jidar sel kepada merah dan membatalkan proses pengeditan.

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

Untuk menggunakan editor ini, editor sel lajur jadual boleh ditetapkan menggunakan kod berikut:

<code class="java">table.getColumnModel().getColumn(columnIndex).setCellEditor(new PositiveIntegerCellEditor(new JTextField()));</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Input Sel JTable untuk Nilai Integer Tidak Positif?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan