Swing/SliderInTableCell のバックアップ差分(No.2)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - 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)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTableのCellEditorとCellRendererにJSliderを使用する
#navi(../)
RIGHT:Posted by [[aterai]] at 2010-02-08
*JTableのCellEditorとCellRendererにJSliderを使用する [#u2d61749]
JTableのCellEditorとCellRendererにJSliderを使用するように設定します。
-&jnlp;
-&jar;
-&zip;
//#screenshot
#ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTTK5HPd3I/AAAAAAAAAj8/qhIGBo92NNE/s800/SliderInTableCell.png)
**サンプルコード [#ydc20559]
#code{{
class SliderEditorRednerer extends AbstractCellEditor
implements TableCellRenderer, TableCellEditor {
private final JSlider sliderEditor = new JSlider();
private final JSlider sliderRenderer = new JSlider();
public SliderEditorRednerer(final JTable table) {
sliderEditor.setOpaque(true);
sliderRenderer.setOpaque(true);
sliderEditor.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
int row = table.convertRowIndexToModel(table.getSelectedRow());
table.getModel().setValueAt(sliderEditor.getValue(), row, 0);
}
});
}
});
}
public Component getTableCellEditorComponent(
JTable table, Object value, boolean isSelected, int row, int column) {
Integer i = (Integer)value;
sliderEditor.setBackground(table.getSelectionBackground());
sliderEditor.setValue(i.intValue());
return sliderEditor;
}
public Object getCellEditorValue() {
return Integer.valueOf(sliderEditor.getValue());
}
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Integer i = (Integer)value;
sliderRenderer.setBackground(isSelected?table.getSelectionBackground():table.getBackground());
sliderRenderer.setValue(i.intValue());
return sliderRenderer;
}
}
}}
**解説 [#wf104d2c]
上記のサンプルでは、1列目のセルエディタ、レンダラーにJSliderを使用するように設定しています。このスライダーの値を変更すると、同じ行の0列目の値も変更されるように、セルエディタにChangeListenerを追加しています。
//**参考リンク
**コメント [#ib89232e]
- メモ: [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6348946 Bug ID: 6348946 JSlider's thumb moves in the wrong direction when used as a JTable cell editor.] via. [http://forums.oracle.com/forums/thread.jspa?threadID=2151323 OTN Discussion Forums : How to insert a JComponent into a cell of JTable] -- [[aterai]] &new{2011-01-16 (日) 02:25:31};
#comment