JLayeredPane
如果两个组件大小相同且全屏,则不绘制低组件
软件工作原理:
JFrame <- APanel <- JLayeredPane <-(分层子组件)
我的软件是全屏软件。
APanel 是 BorderLayout 组件。
JLayeredPane 是 APanel 中的 BorderLayout.CENTER
Panel1 gp = new Panel1(); //Panel1 extends JPanel
gp.setSize(jlp.getSize());
jlp.add(gp);
gp.initializeDisplay(); //starts repaint() loop
jlp.setLayer(gp, 90);
Panel2 lp = new Panel2(); //Panel2 extends JPanel
lp.setSize(jlp.getSize());
lp.initializeDisplay(); //starts repaint() loop
lp.initializeComponents(); //Adds and moves components
jlp.add(lp);
jlp.setLayer(lp, 110);
当我这样制作时,只Panel2显示。Panel1的paintComponent()这个样子的(只需绘制图像):
g.drawImage(myImage, 0, 0, getWidth(), getHeight(), null);
Panel2包含很多按钮和标签。这个方法解决了这个问题。
Panel1 gp = new Panel1();
gp.setSize(jlp.getSize());
jlp.add(gp);
gp.initializeDisplay();
jlp.setLayer(gp, 90);
Panel2 lp = new Panel2();
lp.setSize(jlp.getWidth() - 1, jlp.getHeight() - 1); //Changed here
lp.initializeDisplay();
lp.initializeComponents();
jlp.add(lp);
jlp.setLayer(lp, 110);
但是这种方法又引起了问题:
Dimension cs = new Dimension(jlp.getWidth() - 1, jlp.getHeight() - 1);
GrassPane gp = new GrassPane();
gp.setSize(cs);
jlp.add(gp);
gp.initializeDisplay();
jlp.setLayer(gp, 90);
LobbyPane lp = new LobbyPane(this);
lp.setSize(cs);
lp.initializeDisplay();
lp.initializeComponents();
jlp.add(lp);
jlp.setLayer(lp, 110);
如果您需要更多信息(例如代码),请添加评论。
交互式爱情
相关分类