1

テーブルセルへのユーザー入力を検証したいので、Nimbusのルックアンドフィールを使用します。整数入力を検証するセルエディタのコードは次のとおりです。WholeNumberField入力検証 を拡張JTextFieldおよび追加します。

列に設定すると正常に機能しますが、テキストに対応できません。

テキストカット

デフォルトのセルエディタを使用すると、すべて問題なく表示されます。

通常の外観

このエディターをデフォルトのエディターのようにするにはどうすればよいですか?

4

3 に答える 3

4

WholeNumberFieldは古いコードです。本当にカスタム検証を行いたい場合は、DocumentFilterを使用する必要があります。

ただし、この場合、カスタムエディタを作成する必要はありません。JTableは、数値を検証するためのエディターをすでにサポートしています。isCellEditable(...)返すには、JTableまたはTableModelのメソッドをオーバーライドするだけInteger.Classで、適切なレンダラーとエディターが使用されます。

編集:私の提案が間違っていることに気づきました。

  1. getColumnClass(...)適切なレンダラー/エディターを使用できるように、Integer.classを返すようにオーバーライドする必要があります。
  2. このisCellEditable(...)メソッドは、セルを編集できるかどうかを判断するために使用されます。
于 2011-10-26T14:15:13.447 に答える
4

カスタムセルエディターコンストラクターに以下を追加すると、問題が解決することがわかりました。

Border border = UIManager.getBorder("Table.cellNoFocusBorder");
if (border != null) {
    setBorder(border);
}

私のエディターはJTextFieldを拡張します。

于 2012-01-26T13:29:08.400 に答える
1

fromのインスタンスを取得する場合、それはすでに例のように検証できるコンポーネントである必要があります。TableCellEditorgetDefaultEditor(Object.class)

于 2011-10-26T13:28:16.707 に答える