---
category: swing
folder: InvertedSlider
title: JSliderの順序を反転
tags: [JSlider]
author: aterai
pubdate: 2014-02-10T00:01:53+09:00
description: JSliderの値や目盛りの表示などの順序を反転します。
image: https://lh6.googleusercontent.com/-qI_Mv8LOhi8/UvdK3TThMiI/AAAAAAAAB_0/xQR9OJ1Z8xY/s800/InvertedSlider.png
---
* 概要 [#summary]
`JSlider`の値や目盛りの表示などの順序を反転します。

#download(https://lh6.googleusercontent.com/-qI_Mv8LOhi8/UvdK3TThMiI/AAAAAAAAB_0/xQR9OJ1Z8xY/s800/InvertedSlider.png)

* サンプルコード [#sourcecode]
#code(link){{
slider.setInverted(true);
}}

* 解説 [#explanation]
上記のサンプルでは、`JSlider#setInverted(true)`で値や目盛りの表示位置を反転しています。

- `JSlider#setInverted(true)`は言語に依存する方向設定の`setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)`と同時に指定可能
-- `SwingConstants.HORIZONTAL`の場合両方指定すると表示は元に戻る
-- `SwingConstants.VERTICAL`の場合`JSlider#setInverted(true)`で上方向が最小値・下方向が最大値に変化し、`setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)`で目盛りの位置が右側から左側に変化する
- 範囲の塗り潰しが可能な`MetalLookAndFeel`の場合その塗り潰しも反転する
- 縦`JSlider`のつまみ
-- `WindowsLookAndFeel`を設定した縦`JSlider`で`ComponentOrientation.RIGHT_TO_LEFT`を指定した場合、ノブのフォーカスが描画されないバグ?がある
--- `com/sun/java/swing/plaf/windows/TMSchema.java`で右向きノブは`           stateMap.put(Part.TKP_THUMBRIGHT, sliderThumbStates)`と設定されているが、左向きノブの`Part.TKP_THUMBLEFT`が設定されていないので状態変化が反映されない?
--- フォーカスだけでなく`setEnabled(false)`で無効化してもノブの色が更新されないのでおそらく状態変化が反映されないバグの模様
-- `NimbusLookAndFeel`を設定した縦`JSlider`に`JSlider#putClientProperty("Slider.paintThumbArrowShape", Boolean.TRUE)`を適用して三角形のつまみを使用する場合、`ComponentOrientation.RIGHT_TO_LEFT`を設定してもその三角形の頂点の向きは変化しない(目盛り側に三角形の底辺が向いたままになる)
- `WindowsLookAndFeel`を設定した縦`JSlider`で`ComponentOrientation.RIGHT_TO_LEFT`を指定した場合、ノブのフォーカスが描画されないバグ?がある
-- `com/sun/java/swing/plaf/windows/TMSchema.java`で右向きノブは`           stateMap.put(Part.TKP_THUMBRIGHT, sliderThumbStates)`と設定されているが、左向きノブの`Part.TKP_THUMBLEFT`が設定されていないので状態変化が反映されない?
-- フォーカスだけでなく`setEnabled(false)`で無効化してもノブの色が更新されないのでおそらく状態変化が反映されないバグの模様

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JSlider.html#setInverted-boolean- JSlider#setInverted(boolean) (Java Platform SE 8)]
- [[JSliderの目盛り表示位置をトラック上部に変更する>Swing/SliderTicksPosition]]

* コメント [#comment]
#comment
#comment