javaGUI

目录

一.GUI概念

二.swing概述

三.容器组件

常用容器:

四.布局管理器

1)、FlowLayout FlowLayout

构造方法

2) BorderLayout BorderLayout

3)GridLayout

五.常用组件

标签(JLabel)

构造函数:

方法:

单行文本(JTextField)

构造函数:

方法:

多行文本框(JTextArea)

构造函数:

方法:

密码框:JPasswordField

构造函数:

方法:

按钮(JButton)

构造方法:

方法:

菜单栏组件:

菜单组件:

菜单项组件:

将菜单栏添加到窗口

六.事件处理

七.对话框

JOptionPane对话框

主要有五种消息类型,类型不同,图标不同:

主要有四种消息类型,类型不同,图标不同:

八.内部类

1.什么是内部类

2.为什么用内部类

3.用内部类的好处

4.匿名内部类

5.继承抽象类.

6.内部类的对象

7.内部类意义


一.GUI概念

● 到目前为止,我们编写的都是基于控制台输入的程序,操作使用非常不直 观;

● GUI(Graphical User Interface)即图形用户界面,是指采用图形方 式显示的用户界面,与早期计算机使用的命令行界面相比,图形界面对 于用户来说在视觉上更易于接受

二.swing概述

● swing 是一个为Java设计的GUI工具包javax.swing,该包中包括了图形用户界面 的各种组件支持。

● 一个 Java 的图形界面,由各种不同类型的“元素”组成,这些“元素”被称为 组件(Component)。

● swing中的组件可以分为两大类:容器(如窗口,对话框,面板)和功能组件(如按钮,输 入框,菜单等). ● 它们的区别主要是在概念上的。因为每个容器也都是组件。

● 容器是一种可以包含组件的特殊组件

三.容器组件

功能组件不能独立地显示出来,必须将组件放在一定的容器(container)中才 可以显示出来。

容器可以容纳多个组件,通过调用容器的add(Component comp)方法向容 器中添加组件。

窗口(JFrame)和面板(JPanel)是最常用的两个容器

常用容器:

JFrame类用来创建窗体; 我们的类可以直接继承该类,实现窗体制作.

设置窗体的常用方法

void setSize(int width, int height)

void setVisible(boolean b)

void setTitle(String title)

void setResizable(boolean resizable)

void setLocation(int x,int y)

void setLocationRelativeTo(null);

void setDefaultCloseOperation(int operation)

void dispose()

JPanel()---创建一个空面板

自己创建Jpanel面板对象,把JPanel作为一个组件添加到窗口或某个面板中

常用方法:

void setBackground(Color bg)设置面板的背景色,由参数bg指定颜色

void setLayout(LayoutManager mgr)设置面板的布局,参数是布局管理器

Component add(Component comp)往面板中添加一个组件

四.布局管理器

1)、FlowLayout FlowLayout

布局管理器是流式布局管理器,它将组件按照从左到右、从上到下的顺序来安排, 并在默认情况下使组件尽量居中放置。

this.setLayout(new FlowLayout());

this.add(new Button("确定"));

this.add(new Button("取消"));

FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。

不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对齐方式。

构造方法

new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,垂直间距40 个像素。

new FlowLayout(FlowLayout.LEFT);左对齐,水平和垂直间距为缺省值(5)。

new FlowLayout();使用缺省的居中对齐方式,水平和垂直间距为缺省值(5)

2) BorderLayout BorderLayout

布局管理器只允许在容器内放置5个组件,这5个组件的位置是由BorderLayout类中的 North、South、East、West和Center5个常量来确定的,他们对应着容器中的上下左右中,用法如下:

this.add(new Button(“按钮”) ,BorderLayout.NORTH);

this.add(new Button(“按钮”) ,BorderLayout.CENTER);

组件在BorderLayout中的大小都是可以改变的。一般情况下可以让中间区域大一些,而且可以只用其中几 个区域。

● BorderLayout将整个容器的布局划分成东(EAST)西(WEST)南(SOUTH)北(NORTH)中 (CENTER)五个区域,组件只能被添加到指定的区域。

● 如不指定组件的加入部位,则默认加入到CENTER区。

● 每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。

● BorderLayout型布局容器尺寸缩放原则:

● 北、南两个区域在水平方向缩放。

● 东、西两个区域在垂直方向缩放。

● 中部可在两个方向上缩放

3)GridLayout

● GridLayout布局管理器是矩形网格,在网格中放置组件,每个网格的高度和宽 度都相等,组件随着网格的大小而在水平和垂直方向上拉伸,网格的大小是由容器的 大小和创建网格的多少来确定的。其用法如下:

this.setLayout(new GridLayout(2 , 3)); //创建一个2行3列的网格

this.add(new Button(“按钮”)); 当组件数目大于网格数时,GridLayout保持行数不变而自动增加列数。

● GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下。

● 在 GridLayout 构造方法中指定分割的行数和列数

五.常用组件

标签(JLabel)

标签是容纳文本和图标的控件,通常用来在界面中标识别的控件。

构造函数:

JLabel() 创建一个空的标签

JLabel(String text) 创建一个带文本的标签

方法:

void setText(String text) 设置标签上的文本

String getText() 获得标签上的文本

setFont(new Font(“宋体”,Font.BOLD, 18)); 设置字体

单行文本(JTextField)

构造函数:

JTextField(int columns)

方法:

void setText(String text) 设置文本框中的文本

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

多行文本框(JTextArea)

构造函数:

JTextArea(int rows, int columns) 创建一个指定行数和列数的空文本域

方法:

void setText(String text) 设置文本域中的文本

String getText() 获得文本域中的文本

void setFont(Font font) 设置文本域中文本的字体

void setLineWrap(boolean wrap) //是否自动换行,默认false

如果需要文本区自动出现滚动条,可将文本区对象放入滚动窗格(JScrollPane)中:

JScrollPane scrollPane = new JScrollPane(txtArea);

add(scrollPane );

密码框:JPasswordField

构造函数:

JPasswordField(String text)

JPasswordField(String text, int columns)

方法:

char[] getPassword()

按钮(JButton)

构造方法:

JButton(String text) 创建一个带文本的标签

方法:

void setBackground(Color bg) 设置按钮的背景色

void setEnabled(boolean b) 设置启用(或禁用)按钮,由参数b决 定

void setToolTipText(String text) 设置按钮的悬停提示信息

菜单栏组件:

构造方法:JMenuBar();

方法:add(menu); 向菜单栏添加菜单

菜单组件:

构造方法:JMenu(“菜单名称");

方法:add(menuItem); 向菜单添加菜单选项

菜单项组件:

构造方法:JMenuItem(“菜单项名称");

将菜单栏添加到窗口

setJMenuBar(menuBar)

六.事件处理

● 对于采用了图形用户界面的程序来说,事件控制是非常重要的;到目前 为止,我们编写的图形用户界面程序都仅仅只是完成了界面,而没有任 何实际的功能,要实现相应的功能,必须进行事件处理;

● 用户与GUI组件进行交互就会发生事件,如:按下一个按钮、用键盘输 入一个字符、点击鼠标等等;

● 当前我们要关注的并不是“事件是如何产生的” ,而是讨论当发生事件 后,我们应当“如何处理”

● Java中,事件处理的基本思路如下:

● 一个事件源产生一个事件并把它送到监听器那里,监听器一直等待,直 到它收到一个事件,一旦事件被接受,监听器将处理这些事件;

● 添加事件监听器(此处即为匿名类)

按钮对象.addActionListener(new ActionListener() {

// 事件处理

@Override

public void actionPerformed(ActionEvent e) {

执行操作

}

});

七.对话框

JOptionPane对话框

showMessageDialog():消息对话框

主要有五种消息类型,类型不同,图标不同:

ERROR_MESSAGE 错误消息提示

INFORMATION_MESSAGE 信息提示

WARNING_MESSAGE 警告提示

QUESTION_MESSAGE 问题提示

PLAIN_MESSAGE 简洁提示

showConfirmDialog():确认对话框

主要有四种消息类型,类型不同,图标不同:

DEFAULT_OPTION 默认选项

YES_NO_OPTION 是/否选项

YES_NO_CANCEL_OPTION 是/否/取消选项

OK_CANCEL_OPTION 确定/取消

八.内部类

1.什么是内部类

        在一个类的内部定义的类称为内部类

2.为什么用内部类

        完成的某些功能只能在某个具体的外部类中使用,其他地方不再需要,这时,可以将此功能定义在一个内部类中,而不需要单独的创建一个类.

3.用内部类的好处

        在内部类中可以直接使用外部类中的成员,使用更加方便 例如在服务器端创建一个内部类继承Thread,进行监听

4.匿名内部类

        有一些功能只被使用一次,那么就没必要创建一个类了,在Java中提供了一个匿名的类,用来实现接口或者

5.继承抽象类.

        在哪使用,在哪直接new 例如new 接口/抽象类 这个都不是创建接口的对象,而是创建了一个匿名

6.内部类的对象

        是java对内部类进行的一种语法上的简化

7.内部类意义

        1.实现封装:将某一些功能定义在内部类中,可以通过访问修饰符进行控制

        2.实现多继承:因为java之中一个类只能直接继承一个类,可以通过内部类实现多继承

    
下一篇将实现一个聊天窗口,来体现本篇文章GUI内容,网络内容与线程的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘伊珂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值