• 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

概要

概要

JSliderの値や目盛りの表示などの順序を反転します。

サンプルコード

サンプルコード

slider.setInverted(true);
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JSlider#setInverted(true)で、値や目盛りの表示を反転しています。

解説

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

コメント

参考リンク

コメント