Swing/SliderInTableCell のバックアップ(No.18)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SliderInTableCell へ行く。
- 1 (2011-01-16 (日) 02:25:31)
- 2 (2011-03-11 (金) 02:31:00)
- 3 (2013-01-02 (水) 14:31:40)
- 4 (2013-09-03 (火) 01:25:40)
- 5 (2014-06-26 (木) 16:16:30)
- 6 (2014-10-10 (金) 14:40:06)
- 7 (2014-11-01 (土) 00:46:09)
- 8 (2014-11-25 (火) 03:03:31)
- 9 (2015-11-20 (金) 15:15:35)
- 10 (2017-05-17 (水) 09:32:41)
- 11 (2017-11-02 (木) 15:34:40)
- 12 (2018-01-07 (日) 18:21:05)
- 13 (2019-05-22 (水) 19:34:28)
- 14 (2019-09-17 (火) 15:06:37)
- 15 (2021-05-08 (土) 01:55:26)
- 16 (2022-08-20 (土) 22:15:25)
- 17 (2023-07-27 (木) 11:49:07)
- 18 (2024-01-17 (水) 11:20:52)
- category: swing folder: SliderInTableCell title: JTableのCellEditorとCellRendererにJSliderを使用する tags: [JTable, TableCellEditor, TableCellRenderer, JSlider, ChangeListener] author: aterai pubdate: 2010-02-08T14:27:32+09:00 description: JTableのCellEditorとCellRendererにJSliderを使用するように設定します。 image:
概要
JTable
のCellEditor
とCellRenderer
にJSlider
を使用するように設定します。
Screenshot
Advertisement
サンプルコード
class SliderRenderer extends JSlider implements TableCellRenderer {
public SliderRenderer() {
super();
setName("Table.cellRenderer");
setOpaque(true);
}
@Override public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
Integer i = (Integer) value;
setBackground(isSelected ? table.getSelectionBackground()
: table.getBackground());
setValue(i.intValue());
return this;
}
//Overridden for performance reasons. ---->
@Override public void firePropertyChange(String p, boolean ov, boolean nv) {}
// ...
}
class SliderEditor extends JSlider implements TableCellEditor {
public SliderEditor(final JTable table) {
super();
setOpaque(true);
addChangeListener(new ChangeListener() {
@Override public void stateChanged(ChangeEvent e) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
int row = table.convertRowIndexToModel(table.getEditingRow());
table.getModel().setValueAt(getValue(), row, 0);
table.getModel().setValueAt(getValue(), row, 1);
}
});
}
});
}
@Override public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
Integer i = (Integer) value;
this.setBackground(table.getSelectionBackground());
this.setValue(i.intValue());
return this;
}
@Override public Object getCellEditorValue() {
return Integer.valueOf(getValue());
}
//Copied from AbstractCellEditor
// ...
}
View in GitHub: Java, Kotlin解説
0
列目- 編集不可
1
列目JSlider
を継承するセルエディタ、セルレンダラーを作成して設定- このスライダーのセルエディタに
ChangeListener
を追加し、同じ行の0
列目の値と同期するよう設定