Swing/IconScrollBar の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/IconScrollBar へ行く。
- Swing/IconScrollBar の差分を削除
--- category: swing folder: IconScrollBar title: ScrollBarの表示を変更 tags: [JScrollBar, JScrollPane] author: aterai pubdate: 2006-06-26T12:08:46+09:00 description: JScrollPaneから縦JScrollBarを取得し、そのノブ上にアイコンを追加表示します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTOPy62F7I/AAAAAAAAAcE/M4J9GIXdfBY/s800/IconScrollBar.png --- * 概要 [#summary] `JScrollPane`から縦`JScrollBar`を取得し、そのノブ上にアイコンを追加表示します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTOPy62F7I/AAAAAAAAAcE/M4J9GIXdfBY/s800/IconScrollBar.png) * サンプルコード [#sourcecode] #code(link){{ class BasicIconScrollBarUI extends BasicScrollBarUI { @Override protected void paintThumb( Graphics g, JComponent c, Rectangle thumbBounds) { super.paintThumb(g, c, thumbBounds); Graphics2D g2 = (Graphics2D) g.create(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Color oc = null; Color ic = null; JScrollBar sb = (JScrollBar) c; if (!sb.isEnabled() || thumbBounds.width > thumbBounds.height) { return; } else if (isDragging) { oc = SystemColor.activeCaption.darker(); ic = SystemColor.inactiveCaptionText.darker(); } else if (isThumbRollover()) { oc = SystemColor.activeCaption.brighter(); ic = SystemColor.inactiveCaptionText.brighter(); } else { oc = SystemColor.activeCaption; ic = SystemColor.inactiveCaptionText; } paintCircle(g2, thumbBounds, 6, oc); paintCircle(g2, thumbBounds, 10, ic); g2.dispose(); } private void paintCircle(Graphics2D g2, Rectangle b, int w, Color c) { g2.setPaint(c); int ww = b.width - w; g2.fillOval(b.x + w / 2, b.y + (b.height - ww) / 2, ww, ww); } } }} * 解説 [#explanation] 上記のサンプルでは、`WindowsScrollBarUI`を取得して、垂直スクロールバーに円形アイコンを表示しています。 上記のサンプルでは、`WindowsScrollBarUI`を取得して垂直スクロールバーに円形アイコンを表示しています。 - `WindowsLookAndFeel`が使用されている場合、以下の状態の変化に応じてアイコンの色を変更 - `WindowsLookAndFeel`が使用されている場合以下の状態の変化に応じてアイコンの色を変更 -- 通常の状態 -- マウスでドラッグ中 -- ロールオーバー中 - スクロールバーの長さが足りない場合、このアイコンは表示しない - スクロールバーの長さが足りない場合このアイコンは表示しない * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/basic/BasicScrollBarUI.html#paintThumb-java.awt.Graphics-javax.swing.JComponent-java.awt.Rectangle- BasicScrollBarUI#paintThumb(...) (Java Platform SE 8)] * コメント [#comment] #comment #comment