概要
JSlider
のトラックやつまみ、色などを変更して、音量調節風のスライダーを作成します。
Screenshot
Advertisement
サンプルコード
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, Kotlin解説
- 上:
TriangleSliderUI
MetalSliderUI
を継承するSliderUI
を設定paintThumb(Graphics)
メソッドをオーバーライドしてつまみの形を変更paintTrack(Graphics)
メソッドをオーバーライドしてトラックの形と色を変更
- 注: 垂直方向には未対応
- 下:
HorizontalLabelColor
JSlider#setForeground(Color)
メソッドで目盛の色を青に変更MetalSliderUI
を継承するSliderUI
を作成paintHorizontalLabel(Graphics, int, Component)
メソッドをオーバーライドし目盛を緑色に変更
- 目盛の色はJSliderの目盛にアイコンや文字列を追加するでも変更可能
参考リンク
- Swing - Problem in changing forground color of JSlider!!
- JSliderの目盛にアイコンや文字列を追加する
- JPopupMenuに垂直JSliderを配置してJToggleButtonの上部に表示する