ホームページ  >  記事  >  Java  >  JTable セルにカスタム検証を実装し、視覚的なフィードバックを提供する方法

JTable セルにカスタム検証を実装し、視覚的なフィードバックを提供する方法

DDD
DDDオリジナル
2024-10-31 02:42:01260ブラウズ

How to Implement Custom Validation in JTable Cells and Provide Visual Feedback?

特定の値を拒否するように JTable セルの入力検証をカスタマイズする方法

JTable はデフォルトで、強制できない値を拒否することで入力検証を実行します。指定された列クラスタイプ。たとえば、列のクラス タイプが Integer に設定されている場合、整数以外の値は自動的に拒否され、セルのアウトラインが赤に設定されます。

デフォルトの型チェックを超えてセル入力を検証したい場合は、テーブルのモデルの setValueAt メソッドをオーバーライドできます。ただし、このアプローチは入力が受け入れられなくなるだけであり、型チェッカーと同じ視覚的なフィードバックはトリガーされません。

セル エディターを使用したカスタム検証の実装

するにはカスタム検証ルールに対して同じ検証と視覚的なフィードバックを実現するには、カスタム セル エディターの使用を検討してください。この場合、次のような DefaultCellEditor のサブクラスを作成します。

  • 入力値を検証ルール (正の整数など) に照らしてチェックします。
  • それに応じて isValid フラグを設定します。
  • 検証結果に基づいてセルの境界線の色を設定します。

例: 正の整数用のカスタム セル エディタ

例は次のとおりです。正の整数を検証し、それに応じてセルの境界線の色を設定するカスタム セル エディターの例:

<code class="java">import javax.swing.*;
import javax.swing.table.*;

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>

目的の列のセル エディターをカスタム実装に設定することで、目的の検証動作と視覚的なフィードバックを実現できます。ユーザーが正以外の値を入力したとき。

以上がJTable セルにカスタム検証を実装し、視覚的なフィードバックを提供する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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