GUI:Graphical User Interface(图形用户接口) 用图形的方式,用来显示计算机操作的界面
Java为GUI提供的API都存在java.awt和javax.Swing两个包中
-
java.awt 包:
awt是这三个单词首字母的缩写,翻译过来是抽象窗口工具包,只不过这个包的API,需要调用本地系 统方法实现功能,和本地系统有关联,不利于代码移植,属重量级控件
-
javax.swing 包:
它是在awt的基础上,建立的一套图形界面系统,提供了更多的组件,而且完全由Java实现。增强了移 植性,属轻量级控件 所以,我们做图形界面开发使用的是swing包下的类。
-
这里出现了一个名词:组件。
组件是具有图形表示的对象,该图形表示可以显示在屏幕上并且可以与用户交互 比如说,在用户登录中,文本框和按钮等,都是能够表示图形的对象,所以它们都称为组件。 最后,我们来说一下,我们会用到的常用组件
组件:
-
基本组件:具有图形表示的对象
-
容器组件:是可以添加组件的组件。也就是在容器中可以通过add方法添加组件,既可以添加基本组件,也可 以添加容器组件。
-
JButton,这是按钮
-
JLabel,这是用来显示文本内容的,或者展示图片使用
-
JTextFile,这是文本框,用来输入内容的
-
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();
-
事件源:事件发生的地方。可以是按钮,窗体,图片等
-
事件:发生了什么事情。例如:鼠标点击事件,键盘按下事件等 事件绑定:把事件绑定到事件源上,当发生了某个事件,则触发对应的处理逻辑 事件源对象. 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
事件处理类
事件源 | 产生事件的类类型 |
---|---|
Button | ActionEvent |
Checkbox | ActionEvent、ItemEvent |
Component | ComponentEvent、FocusEvent、KeyEvent、MouseEvent |
MenuItem | ActionEvent |
Scrollbar | AdjustmentEvent |
TextField | ActionEvent |
TextArea | ActionEvent |
Window | WindowEvent |
更多的部分可以参考java手册