JAVA--GUI

一.GUI的概念

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务(简化了用户与计算机系统之间的交互过程)。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。

二.Swing和AWT

AWT是Java的一个基础GUI工具包,它提供了创建窗口,对话框,按钮,文本框等GUI的基本功能(Button,Canvas,checkbox)。而Swing是基于AWT构建的,提供了更多的GUI组件(JFrame,JButton,JLabel,JPanel,Jscrollpane)。

三.常用容器组件

GUI中的基本组成部分是组件,但组件不能独立显示出来,必须放在容器中才能显示出来。一个容器可以容纳多个组件。最常用的容器是JFrame(窗口)和JPanel(面板)。

3.1JFrame(javax.swing)

JFrame是一个顶级窗口,创建一个继承于JFrame的类,在构造函数中,设置窗口属性和添加各种组件,并将窗口设为可见,最后在main方法中创建对象,即可将窗口显示出来。

3.1.1JFrame的窗口属性设置方法

1.setTitle(String x):设置窗口标题

2.setSize(int x,int y):设置窗口大小

3.setLocation()int x,int y):设置窗口位置

4.setLocationRelativeTo(null):可将窗口放到屏幕中间

5.setResizable(boolean):是否可以调整窗口大小

6.setDefaultCloseOperation(JFrame.):设置窗口关闭时的操作

            (1.JFrame.EXIT_ON_CLOSE:退出程序

              (2.JFrame.HIDE_ON_CLOSE:隐藏窗口

7.add():添加组件到窗口

8.setVisible(boolean):设置窗口是否可见   

3.2JPanel(javax.swing)

JPanel是一个面板,可以将组件添加到上面,并对其进行布局

3.2.1JPanel的布局
3.2.1.1流式布局(JPanel的默认布局)

JPanel jPanel=new JPanel();

如图就为流式布局的样式,它是横向排列的

3.2.1.2边界布局

JPanel jPanel=new JPanel(new BorderLayout());

如图就为边界布局的样式,它会自动填充窗口,确保窗口一直的被填满的

3.2.1.3网格布局

JPanel jPanel=new JPanel(new GridLayout(2,2));

如图就为网格布局的样式,它会根据你给出的行列数形成网格区域

3.3JLabe(标签)

构造:new JLabel(" text ");(可有参可无参)

方法:setText("text"):创建文本(会将之前的文本覆盖掉)

           getText():得到文本

           setFont(new Font("宋体",Font.BOLD,18)):设置文本框字体

3.4JMenuBar(菜单)

构造:new JMenuBar()菜单栏    new JMenu("名称")菜单组件    new JMenultem("名称")菜单项名称

这个叫菜单组件

这个叫菜单项名称

方法:add(menu)向菜单栏中添加菜单组件

           add(menultem)向菜单组件添加菜单项组件

           setJMenuBar(menuBar)将菜单添加到面板上

3.5JTextField(单行文本)

构造:new JTextField(String text,int x)(可有参可无参,x表示长度)

方法:setText(“text”)设置文本框中的文字

           getText()获得文本框中的文字

           setEditable(boolean设置文本框是否可以编辑

           setColumns(20)设置长度

3.6JTextArea(多行文本框)

构造:new JTextArea(int x,int y)(可有参可无参)设置文本框行列大小

方法:setText("text")设置文本框的文本

           getText()获得文本框中的文字

           setFont(Font font)设置文本字体

           setLineWrap(boolean)是否自动换行,默认为false(如果需要滚动条,可以将文本框放入滚动窗格JScrallPane)

3.7JButton(按钮)

构造:new JButton("text")text表示按钮上的文字

方法:setEnabled(boolean)设置按钮是否可用

           setBackground(Color)设置按钮背景色

3.8JScrollPane(滚动窗格)

构造:JScrollPane pane=new JScrollPane(txtArea)可使txtArea文本框出现滚动条

3.9JOptionPane(对话框)

3.9.1showMessageDialog() 消息对话框
JOptionPane.showMessageDialog(null,"消息对话框");

JOptionPane.showMessageDialog(null,"消息对话框","错误",JOptionPane.ERROR_MESSAGE);

构造(一般为null,消息内容,对话框标题,提示类型)

提示类型有五种,如图,类型不同图标不同

ERROR_MWEEAGE 错误消息提示

INFORMATION_MESSAGE 信息提示

WARNING_MESSAGE 警告提示 

QUESTION_MESSAGE 问题提示

PLAIN_MESSAGE 简洁提示

3.9.2showConfirmDialog() 确认对话框
JOptionPane.showConfirmDialog(null,"确认对话框");

JOptionPane.showConfirmDialog(null,"11","22",JOptionPane.YES_NO_OPTION);

构造(一般为null,消息内容,对话框标题,消息类型)

它有四种消息类型,所显示的选项不同

DEFAULT_OPTION 默认选项

YES_NO_OPTION 是/否选项

YES_NO_CANCEL_OPTION 是/否/取消选项 

OK_CANCEL_OPTION 确认/取消

四.事件监听

一个事件源产生一个事件,该事件被送到监听器,监听器负责监听等待,直到收到一个事件,开始处理。

一般为按钮设置监听 (点击按钮就开始执行某一操作)

addActionListener(new ActionListener(){

    @Override public void

     actionPerformed(ActinEvent e){

           执行操作

      }

});

五.例子

下面是一个登录界面,为登录按钮添加监听,让其输入不能为空,否则就会提示弹框

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class JFame02 extends JFrame {


    public JFame02(){
        this.setTitle("欢迎登录");
        this.setSize(300,300);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);

        JPanel jPanel=new JPanel(new GridLayout(4,1));
        JPanel jPanel1=new JPanel(new FlowLayout());
        JLabel label1=new JLabel("欢迎登录");
        label1.setFont(new Font("楷体",Font.BOLD,20));
        jPanel1.add(label1);

        JPanel jPanel2=new JPanel(new FlowLayout());
        JLabel label2=new JLabel("账号:");
        jPanel2.add(label2);
        JTextField jTextField1=new JTextField(10);
        jPanel2.add(jTextField1);
        JPanel jPanel3=new JPanel(new FlowLayout());
        JLabel label3=new JLabel("密码:");
        jPanel3.add(label3);
        JTextField jTextField2=new JTextField(10);
        jPanel3.add(jTextField2);
        JPanel jPanel4=new JPanel(new FlowLayout());
        JButton j1=new JButton("登录");
        JButton j2=new JButton("注册");
        jPanel4.add(j1);
        jPanel4.add(j2);


        jPanel.add(jPanel1);
        jPanel.add(jPanel2);
        jPanel.add(jPanel3);
        jPanel.add(jPanel4);
        this.add(jPanel);
        this.setVisible(true);

        j1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String x=jTextField1.getText();
                String y=jTextField2.getText();
                 if(x.isEmpty() ||y.isEmpty()){
                    JOptionPane.showMessageDialog(null,"输入不能为空");
                    return;
                 }
                 new JFrame03();//打开新窗口
                 dispose();//释放当前窗口
            }
        });

    }


    public static void main(String[] args) {
        JFame02 jFame02=new JFame02();
    }
}

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值