java--图形界面(2)

来源:互联网 发布:程序员 白发老头图片 编辑:程序博客网 时间:2024/06/04 19:36

Java—图形界面(2)

按钮组件---JButton

1,JButton是AbstractButton的子类

2,属于容器类组件,可以加入别的组件

3,Swing包的按钮组件不只是utton,还有单选按钮(JRadioButton)、箭头按钮(BasicArrowButton)、触发器按钮(JToggleButton)………

 

布局管理器—介绍

1概念

 组件在容器中的位置和大小是有布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理

2,种类

Java提供了5种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout),网格布局管理器(GridLayout),卡片布局管理器(CardLayout),网格包布局管理器(GridBagLayout)。前三个是常见的布局管理器.

 

边界布局管理器

将容器划分成东南西北中5个区域,中间区域最大

JFrame窗体,JDialog对话框组件默认布局方法。


案例:安放5个按钮,如上图

代码:

package com.panhui;

import java.awt.*;

import javax.swing.*;

 

//继承JFrame

publicclassDemo10_12_1  extendsJFrame{

 

    //定义组件

    JButtonjb1,jb2,jb3,jb4,jb5;

   

   

   

    publicstatic void main(String[]args) {

        // TODO Auto-generated method stub

         Demo10_12_1 demo10_12_1 =new Demo10_12_1();

    }

   

    //构造方法

    public Demo10_12_1()

    {

        //创建组件

         jb1 =newJButton("中部");

         jb2 =newJButton("北部");

         jb3 =newJButton("东部");

         jb4 =newJButton("南部");

         jb5 =newJButton("西部");

               

        //添加组件

        this.add(jb1,BorderLayout.CENTER);

        this.add(jb2,BorderLayout.NORTH);

        this.add(jb3,BorderLayout.EAST);

        this.add(jb4,BorderLayout.SOUTH);

        this.add(jb5,BorderLayout.WEST);

       

        //设置窗体属性

        this.setTitle("边界布局案例");

        this.setSize(300,300);

        this.setLocation(200,200);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       

        //显示窗口

        this.setVisible(true);

    }

 

}

 

截图:


注意事项:

1, 不是5个部分都必须要添加的。

2, 中部组件会自动的调节大小

3, JFrame,JDialog默认布局管理器就是BorderLayout。

 

 

 

流式布局FlowLayout

按照组件的添加次序将按钮组件(也可以是别组件)从左到右放置在容器中。档到达容器的边界时,组件将放置在下一行。可以左对齐,居中对齐,右对齐排列组件

案例:

package com.panhui;

importjava.awt.*;

import javax.swing.*;

 

 

publicclassDemo10_12_2 extends JFrame{

 

    //定义需要的组件

    JButtonjb1,jb2,jb3,jb4,jb5,jb6;

   

    publicstatic void main(String[]args)  {

        // TODO Auto-generated method stub

        Demo10_12_2 demo10_12_2=new Demo10_12_2();

    }

   

    public Demo10_12_2()

    {

        //创建组件

        jb1=new JButton("1");

        jb2=new JButton("2");

        jb3=new JButton("3");

        jb4=new JButton("4");

        jb5=new JButton("5");

        jb6=new JButton("6");

       

        //添加组件

        this.add(jb1);

        this.add(jb2);

        this.add(jb3);

        this.add(jb4);

        this.add(jb5);

        this.add(jb6);

       

        //设置窗口的属性

        this.setTitle("流式布局案例");

        this.setSize(300,300);

        this.setLocation(200,200);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       

        //显示窗口

        this.setVisible(true);

    }

   

 

}

截图:


很明显这不是想要的结果。

原因:JFrame默认的布局管理器的边界布局管理,所以要哪个布局管理,需要在程序中指明。

         //设置布局管理器(左对齐)

        this.setLayout(new FlowLayout(FlowLayout.LEFT));


窗口大小200*200的

流式布局FlowLayout注意事项

1, 不限制它所管理的组件的大小,允许他们有最佳大小

2, 当容器被缩放的时,组件的位置可能变化,但是组件的大小是不会变化的,例如,如果用程序改变按钮的大小,那么出来的按钮的大小是不会被改变的。

3, 默认组件的位置是居中对齐,但是可以通过FlowLayout()函数来指定对齐方式,。

4, 在开发中,一般会禁止用户调整窗口的大小。

           //禁止改变窗体的大小

     this.setResizable(false);

 

 

 

 

网格布局管理器

可以将组件按照几行几列排,而且按钮的大小都是一样。

程序:

package com.panhui;

import java.awt.*;

import javax.swing.*;

 

publicclassDemo10_12_3 extends JFrame {

 

    //定义组件

   

    intsize = 9;

    JButtonjbs[]=new JButton[size];//数组的初始化

   

    publicstatic void main(String[]args) {

        // TODO Auto-generated method stub

       Demo10_12_3 demo =new Demo10_12_3();

       

    }

   

    //构造

    public Demo10_12_3()

    {

        //创建组件

        for(inti = 0;i < size;i++ )

        {

            jbs[i] = new JButton(String.valueOf(i));

        }

       

        //设置网格布局33列,按钮的间隔10

        this.setLayout(new GridLayout(3,3,10,10));

       

        //添加组件

        for(inti = 0;i < size;i++)

        {

            this.add(jbs[i]);

        }

       

        //设置窗口的属性

        this.setTitle("网格布局案例");

        this.setSize(200,200);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setLocation(200,200);

       

        //显示

         this.setVisible(true);

    }

}

截图:


注意事项:

1, 组件的相对位置不随容器的缩放而改变。

2, 所有的组件的大小是一样的

3, 可以通过GridLayout(int rows,int clos,inthgap,int vgap)

Rows:行数,

Cols:列数

Hgap:垂直间隙

Vgap: 水平间隙

 

 

布局管理器生成的步骤

1.继承JFrame

 * 2.定义你需要的组件

 * 3,创建组件(构造函数)

 * 4,添加组件

 * 5,窗体设置。

 * 6,显示窗体

 

1 0
原创粉丝点击