java基础day05---界面

java基础day05—界面

1、GUI:图形用户界面(Graphics User Interface)
开发工具包AWT抽象窗口把工具箱===》swing 解决了awt存在的lcd问题===》SWT swing比较耗内存===》JFace更易用、功能强大的图形包
2、组件
窗口组件:JFrame Frame的子类,属于容器类组件,顶层容器
按钮组件:JButton AbstractButton的子类,容器类组件,可加入到别的组件,swing包的按钮组件有:单选按钮(JRadioButton)、箭头按钮(BasicArrowButton)、触发器按钮(JToggleButton)…
3、布局管理器
布局管理器:组件在容器中的位置和大小由布局管理器决定,所有容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。
种类:边界布局管理器(BorderLayout)、流式布局管理器(FlowLayout)、网络布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网络报布局管理器(GridBagLayout)
步骤:
1.继承JFrame
2.定义需要的组件
3.创建组件(构造函数)
4.添加组件
5.设置窗体属性
6.显示窗体

3个常用布局管理器

1.BorderLayout
注意:
1.不是5个部分都必须添加
2.中间组件会自动调节大小
3.JFrame、JDialog默认布局管理器是BorderLayout

/*
作者:mys
功能:BorderLayout
日期:2018/7/16
 */
package cn.mys;
import java.awt.*;
import javax.swing.*;

public class Demo24_1 extends JFrame {
    //定义组件
    JButton jb1,jb2,jb3,jb4,jb5;
    public static void main(String []args){
        Demo24_1 Demo24_1=new Demo24_1();
    }
    //构造函数
    public Demo24_1(){
        //创建组件
        jb1=new JButton("中部");
        jb2=new JButton("北部");
        jb3=new JButton("南部");
        jb4=new JButton("西部");
        jb5=new JButton("东部");

        //添加组件
        this.add(jb1,BorderLayout.CENTER);
        this.add(jb2,BorderLayout.NORTH);
        this.add(jb3,BorderLayout.SOUTH);
        this.add(jb4,BorderLayout.WEST );
        this.add(jb5,BorderLayout.EAST);

        //设置窗体属性
        this.setTitle("BorderLayout");//设置窗体标题
        this.setSize(300,300);//设置窗体大小
        this.setLocation(200,200);//设置初始化位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当关闭窗口时,保证JVM退出

        //显示窗体
        this.setVisible(true);
    }
}

2.FlowLayout
注意:
1.不限制其所管理的组件大小
2.当容器被缩放时,组件的位置肯发生变化,但组件的大小不变
3.默认组件是居中对齐,可指定其对齐方式

//设置流式布局管理器,并设置对其模式
        this.setLayout(new FlowLayout(FlowLayout.LEFT));

2.GridLayout
注意:
1.组件的相对位置不随容器的缩放而变化,但大小会变化
2.所有的组件大小相同
3.可设置网格行列以及间隙

//设置布局管理器,row3行 rol3列 hgap左右间距10 vgap上下间距10
        this.setLayout(new GridLayout(3,3,10,10));

4、面板组件JPanel
注意:
1.JPanel面板组件,非顶层容器,可加入别的组件
2.一个界面只能有一个JFrame组件,但可有多个JPanel组件
3.JPanel是JCmponent的子类
4.默认布局管理器是FlowLayout

package cn.mys;
import java.awt.*;
import javax.swing.*;

public class Demo24_4 extends JFrame{
    //添加组件
    JPanel jp1,jp2;
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    public static void main(String []args){
        Demo24_4 demo24_4=new Demo24_4();
    }
    //构造函数
    public Demo24_4(){
        //创建组件
        jp1=new JPanel();//默认FlowLayout
        jp2=new JPanel();

        jb1=new JButton("苹果");
        jb2=new JButton("西瓜");
        jb3=new JButton("葡萄");
        jb4=new JButton("橘子");
        jb5=new JButton("香蕉");
        jb6=new JButton("荔枝");

        jp1.add(jb1);
        jp1.add(jb2);
        jp2.add(jb3);
        jp2.add(jb4);
        jp2.add(jb5);

        //设置布局管理器
        //默认布局管理器是FlowLayout

        //添加组件,注意设置边界方向
        this.add(jp1,BorderLayout.NORTH);
        this.add(jb6,BorderLayout.CENTER);
        this.add(jp2,BorderLayout.SOUTH);

        //设置窗口属性
        this.setSize(300,200);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //显示窗口
        this.setVisible(true);
    }
}

这里写图片描述
5、文本框JTextField、密码框JPasswordField、标签JLable

//部分代码
public class Demo24_5 extends JFrame{
    JPanel jp1,jp2,jp3;
    JButton jb1,jb2;
    JTextField jtf;//文本框
    JPasswordField jpf;//密码框
    JLabel jl1,jl2;//标签
    public static void main(String []args){
        Demo24_5 demo24_5=new Demo24_5();
    }

    public Demo24_5(){
        jp1=new JPanel();
        jp2=new JPanel();
        jp3=new JPanel();

        jb1=new JButton("确认");
        jb2=new JButton("取消");

        jtf=new JTextField(10);
        jpf=new JPasswordField(10);
        jl1=new JLabel("管理员");
        jl2=new JLabel("密 码");
        //网络布局管理器
        this.setLayout(new GridLayout(3,1));

        jp1.add(jl1);
        jp1.add(jtf);

        jp2.add(jl2);
        jp2.add(jpf);

        jp3.add(jb1);
        jp3.add(jb2);
    }
}

这里写图片描述
6、单选框JRadioButton、复选框JCheckBox
注意:同一组单选框必须先创建ButtonGroup

//部分代码
public class Demo24_6 extends JFrame{
    JPanel jp1,jp2,jp3;
    JButton jb1,jb2;
    JLabel jl1,jl2;
    JCheckBox jcb1,jcb2,jcb3;//复选框
    JRadioButton jrb1,jrb2;//单选框
    ButtonGroup bg;
    public static void main(String []args){
        Demo24_6 demo24_6=new Demo24_6();
    }

    public Demo24_6(){
        jp1=new JPanel();
        jp2=new JPanel();
        jp3=new JPanel();

        jb1=new JButton("注册用户");
        jb2=new JButton("取消注册");

        jl1=new JLabel("你最喜欢的运动");
        jl2=new JLabel("你的性别");

        jcb1=new JCheckBox("足球");
        jcb2=new JCheckBox("篮球");
        jcb3=new JCheckBox("网球");

        jrb1=new JRadioButton("男");
        jrb2=new JRadioButton("女");
        //同一组单选框必须先创建ButtonGroup
        bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);

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

        jp1.add(jl1);
        jp1.add(jcb1);
        jp1.add(jcb2);
        jp1.add(jcb3);

        jp2.add(jl2);
        jp2.add(jrb1);
        jp2.add(jrb2);

        jp3.add(jb1);
        jp3.add(jb2);
    }
}

这里写图片描述
7、下拉框JComboBox、列表框组件JList+滚动窗格组件JScrollPane

public class Demo24_7 extends JFrame{
    JPanel jp1,jp2;
    JLabel jlb1,jlb2;
    JComboBox jcb1;//下拉框
    JList jlist;//列表框组件
    JScrollPane jsp1;//滚动窗格组件
    public static void main(String []args) {
        Demo24_7 demo24_7 = new Demo24_7();
    }
    public Demo24_7(){
        jp1=new JPanel();
        jp2=new JPanel();

        jlb1=new JLabel("您的籍贯是");
        jlb2=new JLabel("您喜欢去旅游的地区");

        String []jg={"云南","西藏","四川","重庆"};
        jcb1=new JComboBox(jg);//下拉框

        String []jl={"北京","上海","深圳","四川","重庆"};
        jlist=new JList(jl);//列表框组件
        jlist.setVisibleRowCount(3);//设置希望显示多少个选项
        jsp1=new JScrollPane(jlist);//滚动窗格组件

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

        jp1.add(jlb1);
        jp1.add(jcb1);

        jp2.add(jlb2);
        jp2.add(jsp1);//滚动窗格组件
    }
}

这里写图片描述
8、JSplitPane拆分窗格

public class Demo24_8 extends JFrame{
    //定义组件
    JLabel jlb;
    JList jList;//列表框组件
    JSplitPane jsp;//拆分窗格
    public static void main(String []args){
        Demo24_8 demo24_8=new Demo24_8();
    }
    public Demo24_8() {
        //创建组件
        String[] words = {"boy", "girl", "people"};
        jList = new JList(words);

        jlb = new JLabel(new ImageIcon("images/timg.gif"));
        jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jList, jlb);//拆分窗口

        //可以变化
        jsp.setOneTouchExpandable(true);

        //设置布局管理器(默认BorderLayout)

        //添加组件
        this.add(jsp);
    }
}

这里写图片描述
9、JTextArea多行文本框组件

public class Demo24_9 extends JFrame{
    JPanel jp1;
    JTextArea jta;//多行文本框
    JScrollPane jsp;//滚动
    JComboBox jcb;//下拉框
    JTextField jtf;//文本框
    JButton jb;//按钮
    public static void main(String []args){
        Demo24_9 demo24_9=new Demo24_9();
    }
    public Demo24_9(){
        jp1=new JPanel();
        jta=new JTextArea();
        jsp=new JScrollPane(jta);//滚动
        String []name={"mys","sky"};
        jcb=new JComboBox(name);
        jtf=new JTextField(10);
        jb=new JButton("发送");

        jp1.add(jcb);
        jp1.add(jtf);
        jp1.add(jb);

        this.add(jsp);
        this.add(jp1,BorderLayout.SOUTH);

        this.setSize(300,200);
        //添加图标
        this.setIconImage((new ImageIcon("images/qq.jpg").getImage()));
        this.setTitle("腾讯qq");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

这里写图片描述

10、JTabbedPane 选项卡窗格

/*
作者:mys
功能:qq登陆界面  JTabbedPane 选项卡窗格
日期:2018/7/19
 */
package cn.mys;
import java.awt.*;
import javax.swing.*;

public class Demo24_10 extends JFrame{
    //北部
    JLabel jl1;

    //南部
    JPanel jp1;
    JButton jb1,jb2,jb3;

    //中部
    JTabbedPane jtp;//选项卡窗格
    JPanel jp2,jp3,jp4;

    JLabel jl2,jl3,jl4,jl5;
    JTextField jtf;
    JPasswordField jpf;
    JButton jb4;
    JCheckBox jcb1,jcb2;

    public static void main(String []args){
        Demo24_10 demo24_10=new Demo24_10();
    }
    public Demo24_10(){
        //北部
        jl1=new JLabel(new ImageIcon("images/TIM.png"));

        //南部
        jp1=new JPanel();
        jb1=new JButton("登录");
        jb2=new JButton("取消");
        jb3=new JButton("注册向导");

        //中部
        jtp=new JTabbedPane();//选项卡窗格
        jp2=new JPanel();
        jp3=new JPanel();
        jp4=new JPanel();

        //将面板添加到选项卡
        jtp.add("QQ号码",jp2);
        jtp.add("手机号码",jp3);
        jp3.setBackground(Color.CYAN);
        jtp.add("电子邮箱",jp4);
        jp4.setBackground(Color.pink);

        jl2=new JLabel("QQ号码");
        jl3=new JLabel("QQ密码");
        jl4=new JLabel("忘记密码");
        jl4.setFont(new Font("微软雅黑",Font.PLAIN,16));//设置字体样式
        jl4.setForeground(Color.BLUE);//设置字体颜色
        jl5=new JLabel("<html><a href='www.qq.com'>申请密码保护</a>");
        jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

        jtf=new JTextField(10);
        jpf=new JPasswordField(10);
        jb4=new JButton("清除号码");
        jcb1=new JCheckBox("隐身登陆");
        jcb2=new JCheckBox("记住密码");

        //注意:设置jp2布局管理器
        jp2.setLayout(new GridLayout(3,3));

        jp1.add(jb1);
        jp1.add(jb2);
        jp1.add(jb3);

        jp2.add(jl2);
        jp2.add(jtf);
        jp2.add(jb4);

        jp2.add(jl3);
        jp2.add(jpf);
        jp2.add(jl4);

        jp2.add(jcb1);
        jp2.add(jcb2);
        jp2.add(jl5);

        this.add(jl1,BorderLayout.NORTH);
        this.add(jtp,BorderLayout.CENTER);
        this.add(jp1,BorderLayout.SOUTH);

        this.setSize(420,360);
        this.setIconImage(new ImageIcon("images/tim1 .png").getImage());
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

这里写图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值