Summary
JSliderのトラックやつまみ、色などを変更して、音量調節風のスライダーを作成します。
Screenshot

Advertisement
Source Code Examples
class TriangleSliderUI extends MetalSliderUI {
  @Override public void paintThumb(Graphics g) {
    Graphics2D g2 = (Graphics2D) g.create();
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2.fillOval(thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height);
    g2.dispose();
  }
  @Override public void paintTrack(Graphics g) {
    int cx, cy, cw, ch;
    int pad;
    Rectangle trackBounds = trackRect;
    if (slider.getOrientation() == SwingConstants.HORIZONTAL ) {
      Graphics2D g2 = (Graphics2D) g.create();
// ...
slider2.setUI(new MetalSliderUI() {
  @Override protected void paintHorizontalLabel(Graphics g, int v, Component l) {
    JLabel lbl = (JLabel) l;
    lbl.setForeground(Color.GREEN);
    super.paintHorizontalLabel(g, v, lbl);
  }
});
slider2.setForeground(Color.BLUE);
View in GitHub: Java, KotlinDescription
- 上: 
TriangleSliderUIMetalSliderUIを継承するSliderUIを設定paintThumb(Graphics)メソッドをオーバーライドしてつまみの形を変更paintTrack(Graphics)メソッドをオーバーライドしてトラックの形と色を変更
- 注: 垂直方向には未対応
 
 - 下: 
HorizontalLabelColorJSlider#setForeground(Color)メソッドで目盛の色を青に変更MetalSliderUIを継承するSliderUIを作成paintHorizontalLabel(Graphics, int, Component)メソッドをオーバーライドし目盛を緑色に変更
- 目盛の色はJSliderの目盛にアイコンや文字列を追加するでも変更可能
 
 
Reference
- Swing - Problem in changing forground color of JSlider!!
 - JSliderの目盛にアイコンや文字列を追加する
 - JPopupMenuに垂直JSliderを配置してJToggleButtonの上部に表示する