Separatorのグラデーション

編集者:Terai Atsuhiro
作成日:2004-03-29
更新日:2022-01-14 (金) 07:56:54

概要

グラデーションするセパレータを作ってみます。

http://terai.xrea.jp/swing/gradient/screenshot.png

サンプルコード

class GradientSeparator extends JComponent{
  public GradientSeparator() {
    super();
    setPreferredSize(new Dimension(100, 2));
    setBorder(null);
  }
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;
    Insets ins = getInsets();
    g2.setPaint(new GradientPaint(0, 0,
                  SystemColor.controlShadow,
                  getWidth(), 0, SystemColor.control, false));
    g2.fillRect(0, 0, getWidth(), 1);
    g2.setPaint(new GradientPaint(0, 0,
                  SystemColor.controlLtHighlight,
                  getWidth(), 0, SystemColor.control, false));
    g2.fillRect(0, 1, getWidth(), 1);
  }
}

解説

GradientPaintを使ってJSeparatorをグラデーションしています。JSeparatorにsetBorder()すると、セパレータが見えなくなる場合があるのですこし注意が必要です。

コメント