JLayeredPane에 JPanel (우물, 몇개)을 추가하려고하고 있습니다. 그러나 그렇게 할 때 JPanel의 페인트 구성 요소 메서드는 아무 효과가없는 것 같습니다. 예를 들면 다음과 같습니다.JLayeredPane에 JPanel을 추가하면 (자), 페인트와 사이즈 변경이 유효하지 않게됩니다.
import javax.swing.*;
import java.awt.*;
public class Example {
public static void main(String[] args) {
// This Works as expected
JFrame usingPanel = new JFrame();
JPanel p = new JPanel();
p.add(new BluePanel());
usingPanel.setContentPane(p);
usingPanel.pack();
usingPanel.setVisible(true);
// This makes the frame but does not paint the BluePanel
JFrame usingLayer = new JFrame();
JLayeredPane l = new JLayeredPane();
l.setPreferredSize(new Dimension(200,200));
l.add(new BluePanel(), JLayeredPane.DEFAULT_LAYER);
JPanel p2 = new JPanel();
p2.add(l);
usingLayer.setContentPane(p2);
usingLayer.pack();
usingLayer.setVisible(true);
}
static class BluePanel extends JPanel{
public BluePanel(){
setPreferredSize(new Dimension(200,200));
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(0, 0, 200, 200);
}
}
}
왜 그런가요? 가능한 해결책은 무엇입니까?