Swing/CellEditorBorder のバックアップ(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CellEditorBorder へ行く。
- 1 (2005-08-22 (月) 08:08:31)
- 2 (2005-09-16 (金) 12:33:58)
- 3 (2006-02-27 (月) 15:31:19)
- 4 (2006-04-12 (水) 19:35:52)
- 5 (2007-02-15 (木) 16:30:37)
- 6 (2007-04-10 (火) 00:21:58)
- 7 (2008-06-20 (金) 13:36:20)
- 8 (2011-05-24 (火) 02:11:46)
- 9 (2013-03-27 (水) 16:36:20)
- 10 (2014-11-27 (木) 01:34:47)
- 11 (2015-01-22 (木) 21:17:10)
- 12 (2016-07-26 (火) 16:01:10)
- 13 (2017-09-27 (水) 19:06:59)
- 14 (2019-03-29 (金) 19:13:46)
- 15 (2021-01-07 (木) 16:47:00)
- 16 (2023-07-07 (金) 13:52:49)
- 17 (2023-11-16 (木) 14:54:55)
- 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:
概要
Border
を変更したJTextField
を、JTable
のデフォルトセルエディタとして設定します。
Screenshot
Advertisement
サンプルコード
JTextField field = new JTextField();
field.setBorder(BorderFactory.createLineBorder(Color.RED, 2));
table.setDefaultEditor(Object.class, new DefaultCellEditor(field));
View in GitHub: Java, Kotlin解説
上記のサンプルでは、BorderFactory.createLineBorder(Color.RED, 2)
を設定したJTextField
を使用するDefaultCellEditor
を作成し、JTable#setDefaultEditor(...)
で、Object.class
のデフォルトエディタとして設定しています。
JTable#setDefaultEditor(...)
を使用せずに、JTable#prepareEditor(...)
をオーバーライドして、セルエディタとして使用するコンポーネントの背景色やBorder
を変更する方法もあります。
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) {
((JComponent) c).setBorder(
BorderFactory.createLineBorder(Color.GREEN, 2));
}
return c;
}
};