Java GUI

GUI 事件处理机制

       1、在某个组件上执行某个操作,会自动调用某一段代码的执行

        2、事件源: 事件发生的场所,通常指组件

       3、事件:用户在事件源上进行的操作,比如点击某个组件,所有事件都被封装到Event类中

      4、事件监听器:对事件进行反映的机器

      5、注册监听器:把某一个事件监听器通过某一个事件绑定到事件源上

代码具体使用步骤:

1、创建事件源组件对象

2、创建事件监听器类(自定义类),但要继承XxxListener接口并重写所有的抽象类方法

也可以继承XxxAdapter父类

3、创建事件监听器对象(内部类或匿名内部类),把事件监听器对象通过事件源的addXxxListener的方法完成注册监听

Summer:可以发现在整个代码实现过程,事件都没出现,因为事件是人机交互时,用户执行的一个动作,而程序员只需要编写反映整个动作的代码即可。

Swing 常用事件处理

1、窗体事件    WindowEvent

内容: 窗体的打开、关闭、激活、停用等

窗体事件的处理:

  1、自定义类 重写WindowListener接口或者继承WindowAdapter的父类创建事件监听器(用来处理事件的)

2、然后把事件监听器添加到事件发生的那个事件源中,这里调用addWindowListener();

2、鼠标事件  MouseEvent

内容:鼠标按下、松开、单击等

MouseEvent类中定义了许多常量来识别鼠标动作

BUTTON1 鼠标左击

BUTTON2 鼠标滚轮点击

BUTTON3 鼠标右击

3、键盘事件 KeyEvent

内容:键盘按下与释放

4、动作事件 ActionEvent

内容:只是一个动作的抽象,比如点击按钮、双击列表中的选项、选择菜单项、在文本框中输入回车等

attention:同一个动作可能触发几个事件

Swing概述

1、顶级容器:JApplet,JFrame和JDialog

2、中间容器(设置布局):JPanel

3、组件:填充数据、元素以及人机交互的组件

4、事件处理:相应用户的交互

Swing顶级容器

JFrame

方法列举: 设置窗体对象关闭,设置窗体尺寸大小,设置窗体可见等

JDiolag

分类: 

      1、模态对话框:一定要处理完这个窗口后才能与其他窗口交互

      2、非模态对话框:允许用户在处理对话框时与其他窗口交互

与JFrame的区别:不能放大、缩小

具体方法请参见帮助文档

组件

summer:组件必须放在容器中,组件在容器中的位置与尺寸由布局管理器决定

1、BorderLayout   边界布局管理器

组件分为5个区域:

       页头:PAGE_START

       页尾:PAGE_END

       行首:LINE_START

       行尾:LINE_END

       中部:CENTER

这也是BorderLayout中的五个常量

使用:

JFrame f=new JFrame ();

f.add(Component c,Object position)

如果添加组件时不指定添加到哪个区域,则默认添加到CENTER区域中

添加指定组件与位置时,也可以使用NORTH、SOUTH、EAST、WEST、CENTER

2、BoxLayout   箱式布局管理器

3、CardLayout  卡片布局管理器

4、FlowLayout 流式布局管理器

添加的组件会以从左到右的顺序放置,当到达容器的边界时,会自动将组件放到下一行的开始位置

      左对齐:LEFT

      右对齐:RIGHT

      居中对齐:CENTER

tip:在构造FlowLayout时还可以分别设置组件之间的水平与垂直间距

5、GridBagLayout  网格包布局管理器

6、GridLayout  网格布局管理器

tip:

1、可以使用纵横线将容器分成n行m列大小相等的网格,每个网格可以放一个组件

2、添加顺序:从左至右、从上至下

构造方法:

1、GridLayout();  //只有一行,每个组件占一列

2、GridLayout(int row,int col);   //指定行数与列数

3、GridLayout(int row,int col,int hgap,int vgap);  //指定行数与列数,窗格之间水平与垂直方向的间距

7、GroupLayout 分组布局管理器

8、SpringLayout  弹性布局管理器

Swing  常用组件

1、JPane  面板组件

介绍:无边框、不能被移动、放大、缩小或者关闭的面板

           默认布局管理器是FlowLayout

2、JScrollPane   带滚动条的组件

介绍: 只能添加一个组件

            如果要添加多个组件,那么要将这多个组件加到一个组件中,再将这个组件加到JScrollPane中

构造方法:

1、JScrollPane();  //构造的JScrollPane与普通JPane 无差别

2、JScrollPane(Component view);  //创建一个显示指定组件的JScrollPane面板,只要组件的内容超过面板的大小就会显示水平与垂直滚动条

3、JScrollPane(Component view,int vsbPolicy,int hsbPolicy);  //创建一个显示指定容器,并具有指定滚动条策略的JScrollPane

设置面板滚动策略的方法

1、void setHorizontalBarPolicy(int policy); //指定水平滚动策略,即水平滚动条何时显示在滚动面板上

2、void seVeticalBarPolicy(int policy); //指定垂直滚动策略,即垂直滚动条何时显示在滚动面板上

3、void setViewPortView(Component view);  //设置在滚动面板显示的组件

tip:滚动策略方法取值可以使用ScrollPaneConstants接口中声明了多个常量属性来进行设置

常量属性:

1、VERTICAL_SCROLLBAR_AS_NEEDED

     HORIZONTAL_SCROLLBAR_AS_NEEDED

当填充的组件视图超过客户端窗口大小时,自动显示水平和竖直滚动条

2、VERTICAL_SCROLLBAR_ALWAYS

     HORIZONTAL_SCROLLBAR_ALWAYS 

无论填充的组件视图大小,始终显示水平和竖直滚动条

3、VERTICAL_SCROLLBAR_NEVER

     HORIZONTAL_SCROLLBAR_NEVER

无论填充的组件视图大小,始终不显示水平与竖直滚动条

4、JTextField  文本框

     JTextArea   文本组件

tip: 它们都有一个共同父类JTextComponent ——抽象类

方法:

     1、String getText();   //以字符串形式返回文本组件中所有的文本内容

     2、String getSelectedText();  //以字符串形式返回文本组件中选定的文本内容

     3、void selectAll();   //设置文本组件中选中的所有内容

     4、void setEditable();  //设置文本内容可编辑与不可编辑状态

     5、void setText(String text);  // 设置文本组件的内容

    6、void reolaceSelection(String Text);   //用另外一个文本去替换当前选定内容

文本组件

JTextField  文本框

tip: 只能接收单行文本的输入

说明: JTextField 有一个子类 JPasswordField ,表示一个单行输入密码框

           单行密码输入框 是通过显示指定的回显字符作为占位符的

           新创建的密码框默认的回显字符为“ * ”

JTextArea  文本域

tip:能够接收多行文本的输入,而且可以再构造时设定区域的行数与列数

JLabel  标签组件

tip: 能够显示文本、图像、还可以设置标签内容的垂直与水平对齐方式 

  按钮组件

JButton     JCheckBox    JRadioButton

它们都是抽象类AbstractButton类的直接或间接子类

JCheckButton  复选框组件

tip: 有选中与未选中的状态,通常复选框会有多个,然用户可以选择一个或多个,就像数学题里的多选题

方法: 构造方法 

           setText(String text); //设置复选框文本信息

            setSelected(boolen b); //设置复选框的状态  设置复选框是否选中

            isSelected();  //判断复选框是否被选中

JRadioButton   单选按钮组件

tip:单选按钮组件只能选择一个,就像数学中的单选题

那么怎么实现这些按钮达到单选的功能呢?

JRadioButton 按钮之间的互斥,要使用ButtonGroup类来实现  。将多个JRadioButton按钮添加到同一个单选按钮组中就能实现JRadioButton按钮的单选功能

JComboBox     下拉框组件

tip: 它将所有选项折叠在一起,默认显示的是第一个添加的选项

说明:

1、当用户单击下拉框时,会出现下拉式的选择列表,用户可以从中选择其中一项并显示

2、JcomboBox下拉框组件分为可编辑和不可编辑两种形式。 对于不可编辑的下拉框,用户只能选择现有的选项列表 , 对于可编辑的下拉框,用户还可以自己输入新的内容,但是不会添加到下拉框的选项列表中

菜单组件——下拉式菜单

JMenuBar(菜单栏)、JMenu(菜单)、JMenuItem(菜单项)

JMenuBar 表示一个水平菜单栏,它用来管理一组菜单,不参与用户的交互

tip:

1、菜单栏可以放在容器的任何位置,但通常情况下会使用顶级容器的setJMenuBar()方法将它放置在顶级容器的顶部

2、创建菜单栏时,只要使用new关键字创建JMenubar对象即可

3、创建菜单栏对象后,可以调用它的add(JMenu c)方法为其添加JMenu菜单

JMenu  菜单

tip:

1、用来管理菜单项

2、菜单可以是单一层次结构,也可以是多层次结构

3、一般的构造方法:JMenu(String text)  ,参数text指表示菜单上的内容,比如 “文件”

JMenuItem   菜单项

tip:

1、一般构造方法JMenuItem(String text) 为菜单项指定文本内容

2、JMenuItem继承自AbstractButton类,因此可以把菜单项当做一个按钮

3、如果使用无参构造方法创建了一个菜单项,则可以调用从AbstractButton类中继承的setText(String text)方法和setIcon()方法为其设置文本与图标

JPopupMenu      弹出式菜单

具体例子:在Windows桌面单击鼠标右键会出现一个菜单

tip:

1、JPopupMenu 同样可以通过调用add()方法添加JMenuItem,但JPopupMenu是不可见的

,如果想显示弹出式菜单,必须调用show(Component invoker,int x,int y),参数invoker表示JPopupMenu菜单显示的位置的参考组件,x与y表示invoker组件坐标空间中的一个坐标,显示的是JPopupMenu的左上角坐标

一.绘图的相关Java类介绍:Swing自带双缓冲技术

1、JFrame类,是Java图形用户界面(GUI)工具包swing中的存放组件的容器。相当于相框。

2、JPanel类,是Java图形用户界面(GUI)工具包swing中的面板容器类。相当于画板。(用这两者自带具有双缓冲)

3、Graphics类,是Java用于绘图和显示格式化文字的工具。相当于画笔。

二.绘图步骤

 1、创建相框JFrame对象jFrame。

2、创建画板JPanel对象jPanel,重写paint()方法。

3、在paint()方法中,用画笔Graphics对象graphics的drawXxx()进行绘图。别忘了要调用super.paint(g)。

4、将画板jPanel嵌入相框中jFrame.add(jPanel)。

5、设置相框为可见状态jFrame.setVisible(true)和相框大小jFrame.setSize(宽度, 高度)。

Swing绘图 

java.awt中专门提供了一个Graphics类,用来绘制各种图形,使用Graphics类的方法就可以在组件上完成绘制图形

void setColor(Color c);  //将此图形上下文的当前颜色设置为指定颜色

void setFont(Font f);   //将此图形上下文的字体设置为指定字体

void drawLine(int x1,int y1,int x2,int y2);  //以(x1,y1)与(x2,y2)为端点绘制一条线段

void drawRect(int x,int y,int width,int height);  //绘制指定矩形的边框

void drawOval(int x,int y,int width,int height);  //绘制椭圆边框

void fillRect(int x,int y,int width,int height);   //用当前颜色填充指定矩形

void fillOval(int x,int y,int width,int height);  //用当前颜色填充外接指定矩形的椭圆

void drawString(String str,int x,int y);  //使用此图形上下文的当前字体和颜色绘制指定的文本str,最左侧字符左下角位于(x,y)坐标

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

平安喜乐..pry

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

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

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

打赏作者

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

抵扣说明:

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

余额充值