JAVA面板可以重叠在一起吗?如图所示...

[复制链接]
查看11 | 回复1 | 2011-5-19 12:50:24 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-5-19 12:50:24 | 显示全部楼层
这个问题倒还有趣,试了一下。

一.如果两个Panel是完全重叠,可以尝试使用布局:CardLayout。如下:
importjava.awt.*;
importjava.awt.event.*;

publicclassTestLayout{
        Framef;
        Panelp,p1,p2;
        Buttonbtn;
        CardLayoutcal;
        publicTestLayout(){
                f=newFrame();
                p=newPanel();
                p1=newPanel();
                p1.setBackground(Color.red);
               
                p2=newPanel();
                p2.setBackground(Color.green);
               
                btn=newButton(\"切换\");
                cal=newCardLayout();
               
                f.setLayout(newBorderLayout());
                f.add(btn,BorderLayout.SOUTH);
                f.add(p);
               
                p.setLayout(cal);
                p.add(p1);
                p.add(p2);
               
                f.setSize(300,300);
                f.setVisible(true);
               
                //响应关闭
                f.addWindowListener(newWindowAdapter(){
                        publicvoidwindowClosing(WindowEvente){
                                System.exit(0);
                                }
                        });
                       
                //用于在p1和p2之间切换
                btn.addActionListener(newActionListener(){
                publicvoidactionPerformed(ActionEvente){
cal.previous(p);//或者cal.next(p);可实现在p1,p2之间切换
                }
                });
                }
               
        publicstaticvoidmain(Stringargs[]){
                newTestLayout();
                }
        }
二.部分重叠的情况。用swing的组件来测试,先运行以下程序后,再将程序中://p1.setOpaque(false);这句取消注释后运行。两相对照可得部分重叠的结论。如下:
//TestLayout.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;

publicclassTestLayout{
        JFramef;
        Containercon;
        JPanelp1,p2;
        publicTestLayout(){
                f=newJFrame();
                con=f.getContentPane();
                p1=newJPanel();
                p2=newJPanel();
               
                f.setSize(300,300);
                f.setVisible(true);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               
                con.setLayout(null);//为实现自定义组件的位置和大小,需设置内容面版的布局为空
               
                p1.setBackground(Color.red);
                //p1.setOpaque(false);//设置p1为透明的
                p1.setBounds(0,0,300,200);//setBounds(intx,inty,intwidth,intheight)方法中四个参数分别为组件的x,y坐标以及宽width和高height
                con.add(p1);
               
                p2.setBackground(Color.green);
                p2.setBounds(0,100,300,200);
                con.add(p2);
                }
               
        publicstaticvoidmain(Stringargs[]){
                newTestLayout();
                }
        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行