Swing/TriangleTickSlider の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/TriangleTickSlider へ行く。
- Swing/TriangleTickSlider の差分を削除
--- category: swing folder: TriangleTickSlider title: JSliderの目盛りをアイコンに変更する tags: [JSlider, Icon, JLabel] author: aterai pubdate: 2010-05-24T15:00:41+09:00 description: JSliderの目盛りに使用するJLabelを取得し、アイコンを追加したり文字色を変更するなどの変更を行います。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTWS_t-t1I/AAAAAAAAApA/78UrJyqx8og/s800/TriangleTickSlider.png --- * 概要 [#summary] `JSlider`の目盛りに使用する`JLabel`を取得し、アイコンを追加したり文字色を変更するなどの変更を行います。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTWS_t-t1I/AAAAAAAAApA/78UrJyqx8og/s800/TriangleTickSlider.png) * サンプルコード [#sourcecode] #code(link){{ JSlider slider = new JSlider(0, 100); slider.setMajorTickSpacing(10); slider.setMinorTickSpacing(5); slider.setPaintLabels(true); slider.setSnapToTicks(true); slider.putClientProperty("Slider.paintThumbArrowShape", Boolean.TRUE); Dictionary dictionary = slider.getLabelTable(); if (dictionary != null) { Enumeration elements = dictionary.elements(); Icon tick = new TickIcon(); while (elements.hasMoreElements()) { JLabel label = (JLabel) elements.nextElement(); label.setBorder(BorderFactory.createEmptyBorder(1, 0, 0, 0)); label.setIcon(tick); label.setIconTextGap(0); label.setVerticalAlignment(SwingConstants.TOP); label.setVerticalTextPosition(SwingConstants.BOTTOM); label.setHorizontalAlignment(SwingConstants.CENTER); label.setHorizontalTextPosition(SwingConstants.CENTER); label.setForeground(Color.RED); } } }} * 解説 [#explanation] 上記のサンプルでは、`JSlider`のラベル(`JLabel`)一覧を`JSlider#getLabelTable()`メソッドで取得し、この各`JLabel`に三角形のアイコンを追加して目盛り(`MajorTick`)の代替としています。 - `JSlider`のラベル(`JLabel`)一覧を`JSlider#getLabelTable()`メソッドで取得し、この各`JLabel`に三角形のアイコンを追加して目盛り(`MajorTick`)として使用 - `JSlider#setOrientation(SwingConstants.VERTICAL)`で作成した垂直`JSlider`には未対応 * 参考リンク [#reference] - [[JSliderのUIや色を変更する>Swing/VolumeSlider]] - [[JSliderの目盛にアイコンや文字列を追加する>Swing/SliderLabelTable]] * コメント [#comment] #comment #comment