java swing中的JLayeredPane分层面板的问题。。
我在JFrame中就添加一个分层面板,不添加JPanel的时候加到分层面板上的组件可以分层放置并显示出来可是当我再向JFrame里面添加一个JPanel和分层面板的时候,...
我在JFrame中 就添加一个分层面板,不添加JPanel的时候 加到分层面板上的组件可以分层放置并显示出来
可是当我再向JFrame里面添加一个JPanel 和分层面板的时候 ,加到分层面板的组件就显示不出来了。。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Laypane {
public static void main(String[] args) {
new Laypanel();
}
}
class Laypanel extends JFrame{
Laypanel(){
JPanel pane2=new JPanel();//普通面板
JButton btn3=new JButton("deng ");
pane2.add(btn3);
JLayeredPane pane=new JLayeredPane();//分层面板
JButton btn1=new JButton("确定");
JButton btn2=new JButton("取消");
pane.add(btn1, ( Integer)(JLayeredPane.PALETTE_LAYER+50));
pane.add(btn2,( Integer)(JLayeredPane.PALETTE_LAYER+50));
btn1.setBounds(30, 50, 80, 80);
btn2.setBounds(50, 80, 80, 80);
this.add(pane);//向窗口添加分层面板
this.add(pane2);//向窗口添加普通面板
this.setBounds(100, 100, 500, 300);
this.setVisible(true);
this.validate();
}
} 展开
可是当我再向JFrame里面添加一个JPanel 和分层面板的时候 ,加到分层面板的组件就显示不出来了。。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Laypane {
public static void main(String[] args) {
new Laypanel();
}
}
class Laypanel extends JFrame{
Laypanel(){
JPanel pane2=new JPanel();//普通面板
JButton btn3=new JButton("deng ");
pane2.add(btn3);
JLayeredPane pane=new JLayeredPane();//分层面板
JButton btn1=new JButton("确定");
JButton btn2=new JButton("取消");
pane.add(btn1, ( Integer)(JLayeredPane.PALETTE_LAYER+50));
pane.add(btn2,( Integer)(JLayeredPane.PALETTE_LAYER+50));
btn1.setBounds(30, 50, 80, 80);
btn2.setBounds(50, 80, 80, 80);
this.add(pane);//向窗口添加分层面板
this.add(pane2);//向窗口添加普通面板
this.setBounds(100, 100, 500, 300);
this.setVisible(true);
this.validate();
}
} 展开
3个回答
推荐于2016-09-15
展开全部
class Laypanel extends JFrame {
Laypanel() {
JPanel pane2 = new JPanel();// 普通面板
JButton btn3 = new JButton("deng ");
pane2.add(btn3);
JLayeredPane pane = new JLayeredPane();// 分层面板
JButton btn1 = new JButton("确定");
JButton btn2 = new JButton("取消");
pane.add(btn1, (Integer) (JLayeredPane.PALETTE_LAYER + 50));
pane.add(btn2, (Integer) (JLayeredPane.PALETTE_LAYER + 50));
btn1.setBounds(30, 50, 80, 80);
btn2.setBounds(50, 80, 80, 80);
// 这样满意了不?
JPanel pnlMain = new JPanel(new GridLayout());
pnlMain.add(pane);
pnlMain.add(pane2);
this.add(pnlMain);
// this.add(pane);// 向窗口添加分层面板
// this.add(pane2);// 向窗口添加普通面板
this.setBounds(100, 100, 500, 300);
this.setVisible(true);
this.validate();
}
Laypanel() {
JPanel pane2 = new JPanel();// 普通面板
JButton btn3 = new JButton("deng ");
pane2.add(btn3);
JLayeredPane pane = new JLayeredPane();// 分层面板
JButton btn1 = new JButton("确定");
JButton btn2 = new JButton("取消");
pane.add(btn1, (Integer) (JLayeredPane.PALETTE_LAYER + 50));
pane.add(btn2, (Integer) (JLayeredPane.PALETTE_LAYER + 50));
btn1.setBounds(30, 50, 80, 80);
btn2.setBounds(50, 80, 80, 80);
// 这样满意了不?
JPanel pnlMain = new JPanel(new GridLayout());
pnlMain.add(pane);
pnlMain.add(pane2);
this.add(pnlMain);
// this.add(pane);// 向窗口添加分层面板
// this.add(pane2);// 向窗口添加普通面板
this.setBounds(100, 100, 500, 300);
this.setVisible(true);
this.validate();
}
展开全部
应该是pane被pane2覆盖了。一个Frame最多只能加一个Panel对象,最如你用LayeredPanel,最好把其它的层加到LayeredPanel上,而不是直接加到Frame上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是因为JFrame默认是中心格局,即每个组件都是中心排列,下一个会覆盖上一个,你这个里面有两个组件PANE2和PANE,你可以设置一下JFrame的布局不就可以了吗,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询