Swing/CellEditorBorder の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/CellEditorBorder へ行く。
- Swing/CellEditorBorder の差分を削除
--- category: swing folder: CellEditorBorder title: CellEditorのBorderを変更 tags: [JTable, TableCellEditor, Border] author: aterai pubdate: 2005-08-22T08:08:31+09:00 description: Borderを変更したJTextFieldを、JTableのデフォルトセルエディタとして設定します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTIiyFXk2I/AAAAAAAAAS8/Dgu1EqDMma4/s800/CellEditorBorder.png --- * 概要 [#summary] `Border`を変更した`JTextField`を、`JTable`のデフォルトセルエディタとして設定します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTIiyFXk2I/AAAAAAAAAS8/Dgu1EqDMma4/s800/CellEditorBorder.png) * サンプルコード [#sourcecode] #code(link){{ JTextField field = new JTextField(); field.setBorder(BorderFactory.createLineBorder(Color.RED, 2)); table.setDefaultEditor(Object.class, new DefaultCellEditor(field)); }} * 解説 [#explanation] 上記のサンプルでは、`LineBorder`を設定した`JTextField`を使用する`DefaultCellEditor`を作成し、`JTable#setDefaultEditor(...)`メソッドで`Object`クラスのデフォルトセルエディタとして設定しています。 - `JTable#setDefaultEditor(...)`を使用せずに`JTable#prepareEditor(...)`をオーバーライドしてセルエディタとして使用するコンポーネントの背景色や`Border`を変更する方法もある #code{{ JTable table = new JTable(model) { @Override public Component prepareEditor( TableCellEditor editor, int row, int column) { Component c = super.prepareEditor(editor, row, column); if (c instanceof JCheckBox) { JCheckBox b = (JCheckBox) c; b.setBorderPainted(true); b.setBackground(getSelectionBackground()); } else if (c instanceof JComponent && convertColumnIndexToModel(column) == 1) { } else if (c instanceof JComponent && convertColumnIndexToModel(column) == 1) { ((JComponent) c).setBorder( BorderFactory.createLineBorder(Color.GREEN, 2)); } return c; } }; }} * 参考リンク [#reference] - [[JTableが使用するBooleanCellEditorの背景色を変更>Swing/BooleanCellEditor]] * コメント [#comment] #comment #comment