GUI编程基础知识

自从初八后学完慕课的内容后再也没怎么过多接触java的新知识,最近开始每天看一点新的知识。先从GUI开始吧!

一、简介

GUI(Graphic User Interface),这里的概念很好理解,Windows上普遍使用了图形化界面。如果你使用Linux的话,它的字符(命令行)界面与GUI刚好相反。在专业的开发人士看来命令行是非常有效的开发环境,但对于新手甚至是非专业用户来说,字符(命令行)界面是很烧脑的。所以GUI应运而生,目前主流的操作系统均为用户提供了极具特色的图形用户界面。
在介绍概念前先来看一下实现的效果
GUI编程.png

二、图形化界面的三大要素

  1. 组件:Java图形用户界面的基本组成元素,eg.“按钮”
  2. 容器:组件。Eg.JFrame窗体,就是一个容器
  3. 事件
1.容器:通过一定的布局来容纳其他组件和容器的特殊组件。在Java中,容器类是组件类(Component类)的一个子类,具有组件的所有性质。在AWT技术中,容器类由java.awt包提供;在Swing技术中,容器类由javax.swing包提供

• 顶层容器:Jframe、JApplet、JDialog、Jwindow
• 中间容器:JPanel、JScrollPane、JSplitPane、JDesktopPane、JtoolBar
• 特殊容器:在GUI上其特殊作用的中间层,JInternalFrame、JLayeredPane、JroottPane
只有顶层容器可以独立显示,其他组件必须放在一定容器中才能显示出来。
将组件加入到容器中有且仅有add()方法。但实际的界面往往有很多的组件构成,这就需要容器具有一定的布局方式来依次添加组件。也就是布局管理器(LayoutManager)

2.面板:可以解决将所有需要用到的组件都添加到容器中。可以将界面分区或者分块,让我们看到的界面更美观。

这里也许有人会问,直接添加组件有什么缺点不足呢?答案是:
a. 不使用面板,界面无法分区或分块,所有组件只能按照一种布局方式来分步
b. 一些布局方式只能管理有限个组件。例如,JFrame窗体的默认布局管理器是BorderLayout,它最多管理5个组件
c. 窗体显示区域有限,引入带滚动条的JScrollPane和可分割界面的JSplitPane可以扩展界面

在上面的例子中,分别创建了两个面板位于上方(NORTH)和中心(CENTER)。创建了5个基本组件;在上方面板中创建了显示标签(JLabel),文本框( JTextField),按钮(JButton)。在下方面板中创建了显示标签和文本输出区(JTextArea)。

3.布局:java中预先设置了一些用于布局管理的类,其实例称为布局管理器,可与容器配合工作,负责管理组件在容器中的排列方式。是为了使图形用户界面程序更好地适应不同平台而引入的概念

常用的布局管理器有:边界布局(BorderLayout),顺序布局(FlowLayout),网格布局(GridLayout),卡片布局(CardLayout)等。需要导入java.awt
需要注意的点:
i. 各组件的大小和位置由布局管理器负责。组件的setLocation()、setSize()和setBounds()等方法被布局管理器所覆盖,用户无法设置这些属性。但容器的这些属性用户可以自己设置。
ii. 如果用户想自己控制组件大小和位置,可以取消布局管理器。即setLayout(null),将布局管理器设置为空。

大致编写顺序

GUI编程顺序.png

 //创建容器
        JFrame jFrame = new JFrame();
        //设置标题
        jFrame.setTitle("第一次使用GUI编程");
        //创建面板并放在窗体上半部分
        JPanel topPanel = new JPanel();
        jFrame.add(topPanel,BorderLayout.NORTH);

        //创建提示标签并显示提示信息
        JLabel show = new JLabel();
        show.setText("请输入姓名");

        //创建输入框,设置为可编辑,左侧输入,20列
        JTextField input = new JTextField();
        input.setEditable(true);
        input.setHorizontalAlignment(SwingConstants.LEFT);
        input.setColumns(20);
//        //设置布局
//        jFrame.setLayout(new BorderLayout());
        //创建按钮组件
        JButton jButton = new JButton("提交");

        //添加显示标签、输入框和按钮到容器中
        topPanel.add(show);
        topPanel.add(input);
        topPanel.add(jButton);

        //创建面板并放在窗体上半部分
        JPanel bottomPanel = new JPanel();
        jFrame.add(bottomPanel,BorderLayout.CENTER);

        //创建提示标签并设置显示信息
        JLabel againshow = new JLabel();
        againshow.setText("显示所有输入的姓名:");

        //创建输出框,5行32列,不可编辑
        JTextArea output = new JTextArea();
        output.setRows(5);
        output.setColumns(32);
        output.setEditable(false);
        //添加标签和输出框至下部的面板
        bottomPanel.add(againshow);
        bottomPanel.add(output);

        //该事例未添加事件

        //设置窗口初始位置与大小并显示,初始位置一显示屏为基准
        jFrame.setBounds(400,200,400,200);
        //设置窗体关闭方式,默认值是3
        jFrame.setDefaultCloseOperation(3);
        //默认窗体不显示,要设置
        jFrame.setVisible(true);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值