Swing/ScrollBarAsSlider の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ScrollBarAsSlider へ行く。
- Swing/ScrollBarAsSlider の差分を削除
--- 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: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTSgYVysvI/AAAAAAAAAi4/5UjLktCUVb8/s800/ScrollBarAsSlider.png hreflang: href: https://java-swing-tips.blogspot.com/2009/02/use-jscrollbar-as-jslider.html lang: en --- * 概要 [#summary] `JScrollBar`を`JSlider`の代わりとして使用します。 #download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTSgYVysvI/AAAAAAAAAi4/5UjLktCUVb8/s800/ScrollBarAsSlider.png) * サンプルコード [#sourcecode] #code(link){{ int step = 5; int step = 5; int extent = 20; int min = 0; int max = extent * 10; //200 int value = 50; int min = 0; int max = extent * 10; // 200 int value = 50; JScrollBar scrollbar = new JScrollBar( JScrollBar.HORIZONTAL, value, extent, min, max + extent); scrollbar.setUnitIncrement(step); scrollbar.getModel().addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { BoundedRangeModel m = (BoundedRangeModel) e.getSource(); spinner.setValue(m.getValue()); } }); JSpinner spinner = new JSpinner(new SpinnerNumberModel(value, min, max, step)); }} * 解説 [#explanation] 上記のサンプルでは、`JScrollBar`を`JSlider`として使用し、`JSpinner`と連動させています。 - `JScrollBar`に設定する最大値は、ノブ(`extent`はノブの幅)の右端ではなく左端になるように調整する必要がある -- `JSpinner`の最大値とは異なり、`max`+`extent`の値が`JScrollBar`の最大値となる -- `JSpinner`の最大値とは異なり`max`+`extent`の値が`JScrollBar`の最大値となる - `JScrollBar`を使用することで`ArrowButton`での移動、設定によりマウスの中ボタンクリックで絶対位置移動などが可能になる -- [[JScrollBarのトラック内でクリックした位置につまみを移動する>Swing/AllowsAbsolutePositioning]] - 目盛りなどは自前で描画する必要がある -- [[JScrollBarに検索結果をハイライト表示>Swing/ScrollBarSearchHighlighter]] * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JScrollBar.html JScrollBar (Java Platform SE 8)] - [[JScrollBarのトラック内でクリックした位置につまみを移動する>Swing/AllowsAbsolutePositioning]] * コメント [#comment] #comment #comment