0
我正在尝试创建一个使用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可以基本上,你正在使用setSize
时,你不应该和preferredSize
当你不需要......
例如找到here
感谢。这绝对是问题所在。有关何时使用setSize()和setPreferredSize()的提示?因为我显然不知道如何做得很好。 – JZachow 2013-04-23 04:56:27
您不应该使用'setPreferredSize',而应该重写'getPreferredSize'。 'preferredSize'用于向布局经理提供有关组件喜欢如何布局的提示。 'setSize'只能用于1-你没有使用布局管理器(就像'JLayeredPane'的情况那样)或者2-你正在创建你自己的布局管理器 – MadProgrammer 2013-04-23 04:58:32
谢谢。希望我现在可以保持直立。 – JZachow 2013-04-23 05:19:23