Java2 五种界面布局类和实际中的使用

(JPanel)Panel是一个轻量级的容器,由于不是顶层的容器,故其必须放在JFrame(Frame)等高级容器上,这样就可以在一个Frame(JFrame)上通过Panel和5种界面布局管理器构建复杂的应用程序界面。

            下面来介绍一下5种界面布局管理器:

1.FLowLayout:
              流布局用于安排有向流中的组件,这非常类似于段落中的文本行。流的方向取决于容器的 componentOrientation
 属性,
              它可能是以下两个值中的一个: 
  • ComponentOrientation.LEFT_TO_RIGHT
  • ComponentOrientation.RIGHT_TO_LEFT
             流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。   
2.GirdLayout:

              GridLayout
 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,
一个矩形中放置一个组件。这样的布局没有多样化。
 
3.CardLayout:

类似于图层的概念,在窗体或者面板上使用CardLayout可以把订制的UI作为一个图层,这样当有多个图层的时候就可以在图层间进行切换

类似于翻牌的效果。还有两个个特点是:

一、控件没有统一到Panel容器里面,而是将控件添加到了this.add(jb1),this.add(jb2)也就是JFrame中;这是可以使用

jbutton.setBounds(x0,y0,x1,y1);这样设置区域。

二、jp=setLayout(new CardLayout());然后 fo r jp.add(new MyCard(i),"string"); 而MyCard extends JPanel{

};也就是要为CardLayout添加JPanel的容器。

4.BorderLayout:         

             这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTHSOUTHEASTWESTCENTER 。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一,例如:

          Panel p = new Panel();
               p.setLayout(new BorderLayout());
               p.add(new Button("Okay"), BorderLayout.SOUTH);
 5.BoxLayout:
          
     允许垂直或水平布置多个组件的布局管理器。这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架
的大小时仍然被垂直排列。 用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 GridBagLayout,但没那么复杂。
该图显示了两个水平排列的面板,每个面板都包含 3 个垂直排列的组件。

其实实际开发中一般步骤:
1.定义子容器面板的大小和获取控件: 如:
private void initialize(){
    ImageIcon iuser=new ImageIcon("res/用户1.gif");//图标加载
    ImageIcon isend=new ImageIcon("res/写信1.gif");
    ImageIcon ireceive=new ImageIcon("res/接收1.gif");
    this.addTab("登录信息", iuser,getConfigPanel(),null);
    this.addTab("发送邮件", isend,getSendPanel(),null);
    this.addTab("收取邮件", ireceive, getReceivePanel(),null);
    this.setSize(570,550);
}
private ConfigPanel getConfigPanel(){
    if(configPanel==null){
        configPanel=new ConfigPanel();
        configPanel.setEnabled(true);
    }
    return configPanel;
    }
2.使用控件自身设置功能来定位位置,实现精确布局
:如:
jLabel4=new javax.swing.JLabel();
                 jLabel4.setBounds(30,220,140,30);
                 jLabel4.setText("密码");
3.在主容器中设置大小和使用布局方式 :如:
Container c=getContentPane();
      c.setLayout(new java.awt.BorderLayout());
      c.add(tabbedPane,java.awt.BorderLayout.CENTER);
      this.setSize(590,568);//设置主框架的大小
 //this.add(contentPane);//不能adding container's parent to itself
//如果是JPanel就要将其this.add(jp);意思是Container.add(jp);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值