public class FadingLayer extends JPanel {
public FadingLayer(JPanel panel) {
// when set to "insets 0 0 0 0", shows the FadingPanel without fading.
setLayout(new MigLayout("insets 1 0 0 0"));
add(panel,"dock center");
setOpaque(false);
}
@Override
public void paintComponent(Graphics arg0) {
Graphics2D graphics = (Graphics2D) arg0;
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacity);
graphics.setComposite(alpha);
graphics.setColor(getBackground());
graphics.fillRect(0, 0, getWidth(), getHeight());
}
}
これはフェード効果を入れているパネルです。不透明度は、swing の Timer クラスを使用して更新されます。問題は、すべてのインセット値が 0 タイマーに設定されている場合ですが、フェード効果なしで最終結果が表示されるだけです。しかし、インセットの 1 つでもゼロ以外の値に設定されていると、フェード効果が見られます。どうしたの、助けて?
EDIT :
パネル ( に追加されるFadingPanel
) が完全な領域を取得するときに発生します。それは次のようにFadingPanel
設定されているときです-->
setLayout(new BorderLayout());
add(panel,BorderLayout.CENTER);
また
setLayout(new MigLayout("insets 0 0 0 0"));
add(panel,"dock center");