Swing/ScrollBarAsSlider のバックアップの現在との差分(No.5)
-
category: swing
folder: ScrollBarAsSlider
title: JScrollBarをJSliderとして使用する
tags: [JScrollBar, JSlider, JSpinner]
author: aterai
pubdate: 2008-12-15T13:23:29+09:00
description: JScrollBarをJSliderの代わりとして使用します。
image:
hreflang:
href: https://java-swing-tips.blogspot.com/2009/02/use-jscrollbar-as-jslider.html lang: en
概要
概要
JScrollBar
をJSlider
の代わりとして使用します。
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
int step = 5;
#spanend
#spanadd
int step = 5;
#spanend
int extent = 20;
#spandel
int min = 0;
#spanend
#spandel
int max = extent*10; //200
#spanend
#spandel
int value = 50;
#spanend
#spandel
final JScrollBar scrollbar = new JScrollBar(
#spanend
JScrollBar.HORIZONTAL, value, extent, min, max+extent);
#spanadd
int min = 0;
#spanend
#spanadd
int max = extent * 10; // 200
#spanend
#spanadd
int value = 50;
#spanend
#spanadd
JScrollBar scrollbar = new JScrollBar(
#spanend
JScrollBar.HORIZONTAL, value, extent, min, max + extent);
scrollbar.setUnitIncrement(step);
#spandel
scrollbar.getModel().addChangeListener(new ChangeListener(){
#spanend
@Override public void stateChanged(javax.swing.event.ChangeEvent e) {
BoundedRangeModel m = (BoundedRangeModel)e.getSource();
#spanadd
scrollbar.getModel().addChangeListener(new ChangeListener() {
#spanend
@Override public void stateChanged(ChangeEvent e) {
BoundedRangeModel m = (BoundedRangeModel) e.getSource();
spinner.setValue(m.getValue());
}
});
#spandel
final JSpinner spinner = new JSpinner(
#spanend
new SpinnerNumberModel(value, min, max, step));
#spandel
//...
#spanend
#spanadd
JSpinner spinner = new JSpinner(new SpinnerNumberModel(value, min, max, step));
#spanend
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JScrollBar
をJSlider
として使用し、JSpinner
と連動させています。JScrollBar
に設定する最大値は、スクロールバーのノブ(extent
はノブの幅)の右ではなく左端になるように調整する必要があります。
解説
上記のサンプルでは、JScrollBar
をJSlider
として使用し、JSpinner
と連動させています。
- このため、
JSpinner
の最大値とは異なり、max
+extent
がJScrollBar
に設定する最大値となる - 垂直なら上端
-
JScrollBar
に設定する最大値は、ノブ(extent
はノブの幅)の右端ではなく左端になるように調整する必要がある-
JSpinner
の最大値とは異なりmax
+extent
の値がJScrollBar
の最大値となる
-
-
JScrollBar
を使用することでArrowButton
での移動、設定によりマウスの中ボタンクリックで絶対位置移動などが可能になる - 目盛りなどは自前で描画する必要がある