このような場合は、独自の罫線を作成する必要があります。ここ
はグラデーションボーダークラスと例です:
public static class GradientBorder implements Border
{
private Insets margin;
public GradientBorder (int top, int left, int bottom, int right)
{
super();
margin = new Insets (top, left, bottom, right);
}
public void paintBorder (Component c, Graphics g, int x, int y, int width, int height)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint (new GradientPaint (x, y, Color.RED, x + width, y, Color.BLUE));
Area border = new Area (new Rectangle (x, y, width, height));
border.subtract (new Area (new Rectangle (x + margin.left, y + margin.top,
width - margin.left - margin.right, height - margin.top - margin.bottom)));
g2d.fill (border);
}
public Insets getBorderInsets (Component c)
{
return margin;
}
public boolean isBorderOpaque()
{
return true;
}
}
あなたは、色を他の勾配方向を指定することができますofcourseのe.t.c.コンストラクタに初期化を組み込むこともできます(必要な場合)。これを使用するにはあなただけ(任意のJComponentの後継で)境界線を設定する必要があります。
jComponent.setBorder (new GradientBorder (25, 50, 25, 50));
基本的には任意の着色/アニメーション/形状e.t.c.であなたがこの方法を好きな境界線を作成することができます
半透明の境界線を作成したい場合は - isBorderOpaque()メソッドがtrueを返す必要があります(半透明の色、丸みを帯びた角などで作成する場合)。そうしないと、コンポーネント再描画の問題。