JTable セルへの無効な入力の防止
JTable コンポーネントは、整数などの特定のデータ型に対する組み込みの検証を提供します。ただし、デフォルトでは負の値またはゼロの値は処理されません。カスタム検証ルールを実装するには、カスタム セル エディター クラスを作成できます。
解決策:
入力を検証する TableModel を使用する代わりに、DefaultCellEditor のサブクラスを次のように作成します。
<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>
このカスタム エディターはユーザー入力をチェックし、無効な値 (負またはゼロ) の赤い境界線を表示します。
実装:
カスタム エディターをインスタンス化し、目的の列に設定します。
<code class="java">JTextField integerField = new JTextField(); PositiveIntegerCellEditor integerEditor = new PositiveIntegerCellEditor(integerField); table.getColumnModel().getColumn(columnIndex).setCellEditor(integerEditor);</code>
このソリューションは、整数入力に対するデフォルトのエディターの動作を模倣し、負の値またはゼロの値を拒否し、無効なセルを強調表示します。
以上がJTable セルに負の値またはゼロの値が含まれないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。