ホームページ  >  記事  >  Java  >  JTable セル入力の非正の整数値を検証するにはどうすればよいですか?

JTable セル入力の非正の整数値を検証するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-26 13:35:02565ブラウズ

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

JTable セルの入力が無効な値であることを検証する方法

JTable 列のクラス型を特定の数値サブクラスとして定義すると、Swing はユーザーを自動的に拒否しますタイプに合わない入力。たとえば、列が Integer.class として定義されている場合、double 値は拒否されます。

正でない値に対して同じ効果を得るには、テーブル モデルで setValueAt メソッドをオーバーライドできます。ただし、このアプローチだけでは、ユーザーに視覚的なフィードバックを提供できません。

より完全なソリューションには、カスタム セル エディターの使用が含まれます。このようなエディターの 1 つが PositiveIntegerCellEditor です。これは、DefaultCellEditor を拡張し、stopCellEditing メソッドをオーバーライドして負の値またはゼロの値をチェックします。無効な値が検出された場合、エディターはセルの境界線を赤に設定し、編集プロセスをキャンセルします。

<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>

このエディターを使用するには、次のコードを使用してテーブル列のセル エディターを設定できます。

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

以上がJTable セル入力の非正の整数値を検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。