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 サイトの他の関連記事を参照してください。