JLayeredPane을 사용하여 패널을 다른 패널보다 가운데에 배치하는 패널을 만들려고합니다. 그래도 작은 패널을 표시 할 수는 없습니다. 내가 뭘 잘못하고 있는지에 대한 어떤 생각?JLayeredPane의 최상위 레이어가 표시되지 않습니다.
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class MainPanel extends JPanel {
private JLayeredPane pane;
private AllPlayersPanel players; //Larger panel, uses circleLayout
private GamePanel game; //Smaller panel, simple BorderLayout
public MainPanel(){
super();
setSize(900, 900);
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
pane = new JLayeredPane();
pane.setPreferredSize(new Dimension(900, 900));
players = new AllPlayersPanel();
players.setPreferredSize(players.getPreferredSize());
players.setLocation(0,0);
//players.setOpaque(false);
pane.add(players, new Integer(0));
game = new GamePanel();
game.setPreferredSize(game.getPreferredSize());
game.setLocation(385, 405);
//game.setOpaque(false);
pane.add(game, new Integer(2));
add(pane);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
JComponent newPane = new MainPanel();
newPane.setOpaque(true);
frame.setContentPane(newPane);
frame.pack();
frame.setVisible(true);
}
}
저는 .setOpaque()의 모든 조합을 시도해 봤습니다.
CircleLayout는 당신이 필요하지 않을 때 당신이하고 preferredSize
안 할 때 기본적으로, 당신은 예를 들어
... setSize
을 사용하고
감사합니다. 그건 분명히 문제였습니다. setSize() 및 setPreferredSize()를 사용하는 방법에 대한 팁? 나는 분명히 잘하는 법을 알지 못하기 때문에. – JZachow
'setPreferredSize'를 사용하지 말고'getPreferredSize'를 오버라이드해야합니다. 'preferredSize'는 배치 관리자가 구성 요소를 배치하는 방법에 대한 힌트를 제공하는 데 사용됩니다. 'setSize'는 1- 레이아웃 관리자를 사용하지 않는 경우 ('JLayeredPane'과 같이) 또는 2 - 자신 만의 레이아웃 관리자를 만들 때 – MadProgrammer
고마워요. 바라건대 지금 나는 그것을 바로 지킬 수있다. – JZachow