パネルの影を作成するために、 swingx のShadowRendererを使用しようとしています。これが私がこれまでにしたことです:
パネル コンストラクターでシャドウ レンダラーを 1 回作成します。
public CustomPanel() { super(); renderer = new ShadowRenderer(20, 0.5f, Color.RED); }
パネルのサイズが変更されるたびに、新しい影を再計算します。
@Override public void setBounds(int x, int y, int width, int height) { super.setBounds(x, y, width, height); shadow = renderer.createShadow(GraphicsUtilities.createCompatibleTranslucentImage(width, height)); }
そして、パネルのメソッドをオーバーライドして
paintComponent
、生成された画像を描画します。protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g.create(); g2.drawImage(shadow, 0, 0, null); //super.paintComponent(g); }
しかし、shadow
画像は決して表示されません。なんで?私はこれを読んで、シャドウレンダラーによって生成された一種の「影付き」画像を描画するコードを除いて。