GUI:Graphical User Interface(图形用户接口) 用图形的方式,用来显示计算机操作的界面

Java为GUI提供的API都存在java.awt和javax.Swing两个包中

  • java.awt 包:

    awt是这三个单词首字母的缩写,翻译过来是抽象窗口工具包,只不过这个包的API,需要调用本地系 统方法实现功能,和本地系统有关联,不利于代码移植,属重量级控件

  • javax.swing 包:

    它是在awt的基础上,建立的一套图形界面系统,提供了更多的组件,而且完全由Java实现。增强了移 植性,属轻量级控件 所以,我们做图形界面开发使用的是swing包下的类。

  • 这里出现了一个名词:组件。

    组件是具有图形表示的对象,该图形表示可以显示在屏幕上并且可以与用户交互 比如说,在用户登录中,文本框和按钮等,都是能够表示图形的对象,所以它们都称为组件。 最后,我们来说一下,我们会用到的常用组件

组件:

  • 基本组件:具有图形表示的对象

  • 容器组件:是可以添加组件的组件。也就是在容器中可以通过add方法添加组件,既可以添加基本组件,也可 以添加容器组件。

  1. JButton,这是按钮

  2. JLabel,这是用来显示文本内容的,或者展示图片使用

  3. JTextFile,这是文本框,用来输入内容的

  4. JTextArea,这是文本域,用来输入多行多列的数据的

接着,我们再来看容器组件:

面板也是一个容器,我们常用JPanel,后面用到在具体讲解 窗体,下面是Frame,这是awt包下,而我们使用的是JFrame,这是swing包下。 好了,GUI相关的基础知识我们就先讲到这里

初识窗体

JFrame:窗体(顶层窗体)

JFrame(); —> 构造一个不可见的窗体

JFrame类的构造方法

构造方法功能说明
public JFrame()创建一个没有窗口标题的窗口框架
public JFrame(String title)创建一个窗口标题为title的窗口框架

JFrame成员方法

方法功能说明
public void setTitle(String title)设置或修改框架的标题
public String getTitle()返回框架的标题
public void setBackground(Color c)设置框架的背景颜色
public MenuBar getMenuBar()返回窗口中的菜单对象
public void setMenuBar(MenuBar mb)设置窗口的菜单条
public void remove(MenuComponent mc)从窗口删除给定的菜单项
public boolean isResizable()判断窗口是否可以调节大小
public void setVisible(boolean b)显示或隐藏窗体(取决于b的值-true为显示,-false为隐藏)
public void setLocationRelativeTo(component c)设置窗体位置,null为屏幕中央
public void setAlawysOnTop(boolean c)设置此窗口是否终究位于其他窗口之上
public void setDefaultCloseoperation(int operation)设置窗体关闭时默认操作,3–为关闭时退出程序

窗体添加按钮JButton(); 构造方法

JButton(String text);创建一个带文本的按钮

JButton() 成员方法

void setSize(int w, int h);设置按钮的宽高大小
void setLocation(int x, int y);设置按钮的坐标
void setBounds(int x, int y, int w, int h);上面两个方法的结合

和窗体相关操作

窗体对象.setLayout(null);————> 取消窗体默认布局

**
**

窗体对象.add(按钮对象名) ——————>把按钮加入窗体中

JLabel();显示文本或图像类构造方法:

JLabel(String text);创建指定的文本

添加图片时,不能直接加路径,直接使用字符串路径会识别成text文本


需要使用—–ImageIcon(String filename); 的构造方法

例子:

ImageIcon img = new ImageIcon("D\\img\\demo.png"); // 使用转义符\定义完整路径JLabel jl = new JLabel(img);   // 将图片加入

成员方法:

与其按钮的成员方法

void setBounds(int x, int y, int width, int height):设置位置和大小

JTextField(); 文本输入框构造方法

JTextField(String text);文本输入框,有文本默认在输入框里显示

JPassowrdFIeld();密码输入框构造方法:

JPassowrdFIeld(String text);密码输入框,有文本默认在输入框里显示

成员方法

void getText();获取输入框文本内容

监听事件AcationEvent();

  1. 事件源:事件发生的地方。可以是按钮,窗体,图片等

  2. 事件:发生了什么事情。例如:鼠标点击事件,键盘按下事件等 事件绑定:把事件绑定到事件源上,当发生了某个事件,则触发对应的处理逻辑 事件源对象. addXXXListener(事件);

ActionEvent();构造方法—-用于传递事件,为组件使用的addActionListener();方法接受此类事件的addActionListener()对象


要添加事件的对象名.addActionListener(new ActionListener() { // 这里使用的为匿名类写法​                @override​                public void cationPerformed(ActionEvent e){  // 重写该方法, ​                      事件触发代码​    ​                      }});

低级事件

低级事件是指基于组件和容器的事件,当一个组件上发生特定动作,则触发了低级(组件)事件。

(1)ComponentEvent组件事件:组件尺寸变化、移动。

(2)ContainerEvent容器事件: 组件增加、移动。

(3)WindowEvent窗口事件: 包括用户点击了关闭按钮,窗口得到与失去焦点,窗口最小化等。

(4)FocusEvent焦点事件: 焦点的获得和丢失。

(5)KeyEvent键盘事件: 键按下、释放。

(6)MouseEvent鼠标事件: 包括鼠标按下,鼠标释放,鼠标点击等。

这里不一一列举了

高级事件(语义事件)

高级事件可以不和特定的动作相关联,该类事件具有一般性,取决于触发此事件的含义。

(1)ActionEvent动作事件:对应一个动作事件,它不代表一个特定的动作,而是一种一般性动作(语义)。如按钮按下、JTextField中按Enter键。

(2)AdjustmentEvent调节事件:在滚动条上移动滑块以调节数值。

(3)ItemEvent项目事件:选择项目,不选择“项目改变”。

(4)TextEvent文本事件:文本对象改变。

常用事件处理类

常用组件事件类主要包括:

  • 操作事件类ActionEvent

  • 选项事件类ItemEvent

  • 文本事件类TextEvent

  • 窗口事件类WindowEvent

  • 鼠标事件类MouseEvent

  • 按键事件类KeyEvent

事件处理类

事件源产生事件的类类型
ButtonActionEvent
CheckboxActionEvent、ItemEvent
ComponentComponentEvent、FocusEvent、KeyEvent、MouseEvent
MenuItemActionEvent
ScrollbarAdjustmentEvent
TextFieldActionEvent
TextAreaActionEvent
WindowWindowEvent

更多的部分可以参考java手册