JPanel
の上にカスタム透明をオーバーレイしようとしています。私は、両方のコンポーネントをレイヤーペインの端まで伸ばしたいと思います。私はオーバレイを表示したいとき以外は一般的に何もしないように、トップコンポーネントのメソッドpaintComponent
をオーバーライドしました。その後、適切なテキストを適切な場所に描画します。ここでこれは1つのパネルに複数のコンポーネントをオーバーレイする適切な方法ですか?
は、レイアウトの問題のために私のソリューションです:
JLayeredPane jlp = new JLayeredPane();
jlp.setLayout(new OverlayLayout(jlp) {
@Override
public void layoutContainer(Container target) {
for (Component c: target.getComponents())
c.setBounds(0, 0, target.getWidth(), target.getHeight());
}
});
質問です - layoutContainer
を上書きせずにこれを行うには良い方法はありますか?これは私のハックのようだ。つまり、コンポーネントをレイアウトするときにこれを行うオプションがないとは本当に信じられません。しかし、私がこのメソッドをオーバーライドしないと、それは上辺と左辺にギャップを残します。
ここに何か不足していますか、これはこれらの要件を処理する適切な方法ですか?