基础——GUI"/>
Java基础——GUI
GUI(Graphical User Interfase:图形用户接口)
位置:GUI所用对象都存在于 java.Awt 和 javax.Swing两个包中
一.Awt
简介:Abstract Window ToolKit(抽象窗口工具包),依赖于平台,需要调用本地系统方法来实现功能,所以跨平台性稍弱
位置:java.awt包
特点:图形化界面是由多线程控制的,只要增加一个界面,就会多出一个线程,所以界面能够独立于主线程运行
Component类
描述:此类是Awt包中全部组件的基类
方法摘要 | |
---|---|
void | setVisible(boolean b) 根据参数 b 的值显示或隐藏此组件。 |
void | setSize(int width, int height) 调整组件的大小,使其宽度为 width ,高度为 height 。(所有设置两个坐标的都是前者是横坐标,后者是纵坐标) |
void | setLocation(int x, int y) 将组件移到新位置。 |
void | setBounds(int x, int y, int width, int height) 移动组件并调整其大小。 |
void | addKeyListener(KeyListener l) 添加指定的按键侦听器,以接收发自此组件的按键事件。 |
void | addMouseListener(MouseListener l) 添加指定的鼠标侦听器,以接收发自此组件的鼠标事件。 |
1.Container类
特点:(1)Container分支与另一个分支区别在于Container分支的全部组件都能添加一个或多个其他组件,通过add()方法
方法摘要 | |
---|---|
Component | add(Component comp) 将指定组件追加到此容器的尾部。 |
Component | add(Component comp, int index) 将指定组件添加到此容器的给定位置上。 |
void | setLayout(LayoutManager mgr) 设置此容器的布局管理器。 |
1.1 布局方式
FlowLayOut类( 流式布局管理器)
(1)从左到右的顺序排列,Panel默认的布局管理器
(2)特点:组件默认居中,当一行组件填充满时会自动换行。
BorderLayout类( 边界布局管理器)
(1)东、南、西、北、中的顺序排列,Frame、Window默认的布局管理器。
(2)特点:如果不指定方向边界,那么添加的组件会直接居中填充整个窗体显示,之后添加的组件会覆盖之前的
GridLayout类( 网格布局管理器)
(1)规则矩阵布局
GridBagLayout类( 网格包式布局)
(1)一个组件占用多个格子
CardLayout类( 卡片式布局)
(1)不同的选项卡链接到不同页面
1.2 Window类
方法摘要 | |
---|---|
void | addWindowListener(WindowListener l) 添加指定的窗口侦听器,以从此窗口接收窗口事件。 |
1.3 Dialog类
注1:默认BorderLayout边界式布局
构造方法摘要 | |
---|---|
Dialog(Dialog owner) 构造一个最初不可见的、无模式的 Dialog ,它带有指定所有者 Dialog 和一个空标题。 | |
Dialog(Dialog owner, String title) 构造一个最初不可见的、无模式的 Dialog ,它带有指定的所有者 Dialog 和标题。 | |
Dialog(Dialog owner, String title, boolean modal) 构造一个最初不可见的 Dialog ,它带有指定的所有者 Dialog 、标题和模式。(对话框必须依赖于某窗体,布尔值表示是否可对依赖的窗体操作) | |
Dialog(Frame owner) 构造一个最初不可见的、无模式的 Dialog ,它带有指定所有者 Frame 和一个空标题。 | |
Dialog(Frame owner, boolean modal) 构造一个最初不可见的 Dialog ,它带有指定所有者 Frame 、模式和一个空标题。(对话框必须依赖于某窗体,布尔值表示是否可对依赖的窗体操作) | |
Dialog(Frame owner, String title) 构造一个最初不可见的、无模式的 Dialog ,它带有指定的所有者 Frame 和标题。 | |
Dialog(Frame owner, String title, boolean modal) 构造一个最初不可见的 Dialog ,它带有指定的所有者 Frame 、标题和模式。(对话框必须依赖于某窗体,布尔值表示是否可对依赖的窗体操作) |
1.3.1 FileDialog类
功能:显示一个对话框,用户可以从中选取文件
字段摘要 | |
---|---|
static int | LOAD 此常量值指示文件对话框窗口的作用是查找要读取的文件。 |
static int | SAVE 此常量值指示文件对话框窗口的作用是查找要写入的文件。 |
构造方法摘要 | |
---|---|
FileDialog(Frame parent) 创建一个文件对话框,用于加载文件。(默认mode为LOAD) | |
FileDialog(Frame parent, String title) 创建一个具有指定标题的文件对话框窗口,用于加载文件。(默认mode为LOAD) | |
FileDialog(Frame parent, String title, int mode) 创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。(mode为此类的成员变量值SAVE或者LOAD) |
方法摘要 | |
---|---|
String | getDirectory() 获取此文件对话框的目录。 |
String | getFile() 获取此文件对话框的选定文件。 |
1.4 Frame类
构造方法摘要 | |
---|---|
Frame() 构造一个最初不可见的 Frame 新实例()。 | |
Frame(String title) 构造一个新的、最初不可见的、具有指定标题的 Frame 对象。 |
2.Button类
构造方法摘要 | |
---|---|
Button() 构造一个标签字符串为空的按钮。 | |
Button(String label) 构造一个带指定标签的按钮。 |
方法摘要 | |
---|---|
void | addActionListener(ActionListener l) 添加指定的动作侦听器,以接收发自此按钮的动作事件。 |
void | setMenuBar(MenuBar mb) 将此窗体的菜单栏设置为指定的菜单栏。 |
3.Label类
构造方法摘要 | |
---|---|
Label() 构造一个空标签。 | |
Label(String text) 使用指定的文本字符串构造一个新的标签,其文本对齐方式为左对齐。 |
方法摘要 | |
---|---|
String | getText() 获取此标签的文本。 |
void | setText(String text) 将此标签的文本设置为指定的文本。 |
4.TextComponent类
注1:文本组件,包括子类【文本框】与【文本区域】
方法摘要 | |
---|---|
String | getText() 返回此文本组件表示的文本。 |
void | setText(String t) 将此文本组件显示的文本设置为指定文本。 |
4.1 TextField类
构造方法摘要 | |
---|---|
TextField() 构造新文本字段。 | |
TextField(int columns) 构造具有指定列数的新空文本字段。(列数初始化) |
方法摘要 | |
---|---|
void | setText(String t) 将此文本组件显示的文本设置为指定文本。 |
4.2 TextArea类
构造方法摘要 | |
---|---|
TextArea() 构造一个将空字符串作为文本的新文本区。 | |
TextArea(int rows, int columns) 构造一个新文本区,该文本区具有指定的行数和列数,并将空字符串作为文本。(行数、列数初始化) |
方法摘要 | |
---|---|
void | append(String str) 将给定文本追加到文本区的当前文本。 |
5.一个窗体正确的代码建立格式
import java.awt.*;
import java.awt.event.*;class java
{//定义该图形所需组建的引用private Frame frame;private Button button;java(){init();}private void init(){frame = new Frame("我的窗体");//对Frame进行基本设置frame.setSize(500,400);frame.setLocation(500,350);frame.setLayout(new FlowLayout());button = new Button("郑天成※比利");//将组建添加进frame中frame.add(button);//添加窗体事件event();//显示窗体frame.setVisible(true);}private void event(){//窗体监听器frame.addWindowListener(new WindowAdapter(){//关闭功能public void windowClosing(WindowEvent e){System.exit(0); }});}public static void main(String[] args){new java();}
}
6. MenuComponent类
注意:此类独立于Component基类,自立成派
6.1 菜单的专有名词定义
(1)菜单栏:(菜单条)就是任何窗体上边横向排列的一条
(2)菜单:栏中的每一个就是一个菜单
(3)菜单项:每一个菜单中都有多个菜单项
(4)子菜单:菜单项中可能还有子菜单
6.2 MenuBar类
注1:继承MenuComponent类,菜单栏
注2:添加菜单栏可以通过Frame窗体的setMenuBar()这个方法
构造方法摘要 | |
---|---|
MenuBar() 创建新的菜单栏。 |
方法摘要 | |
---|---|
Menu | add(Menu m) 将指定的菜单添加到菜单栏。 |
6.3 MenuItem类
注1:继承MenuComponent类,菜单项
方法摘要 | |
---|---|
void | addActionListener(ActionListener l) 添加指定的动作侦听器,以从此菜单项接收动作事件。 |
6.3.1 Menu类
注1:继承MenuItem类,菜单
构造方法摘要 | |
---|---|
Menu(String label) 构造具有指定标签的新菜单。 |
方法摘要 | |
---|---|
MenuItem | add(MenuItem mi) 将指定的菜单项添加到此菜单。 |
(1)GUI的笔记本程序
import java.awt.*;
import java.awt.event.*;
import java.io.*;/**
*创建一个GUI笔记本程序,并且具有打开,保存,退出的功能
*/class java
{//组件变量private Frame frame;private TextArea ta;private MenuBar bar;private Menu doc;private MenuItem loadItem,saveItem,exitItem;private FileDialog load,save;private File savefile;//构造java(){init();}//构建图形化界面private void init(){frame = new Frame("窗体");frame.setBounds(300,400,500,400);ta = new TextArea();frame.add(ta);bar = new MenuBar();doc = new Menu("文件");loadItem = new MenuItem("打开");saveItem = new MenuItem("保存");exitItem = new MenuItem("退出");bar.add(doc);doc.add(loadItem);doc.add(saveItem);doc.add(exitItem);load = new FileDialog(frame,"打开",FileDialog.LOAD);save = new FileDialog(frame,"保存",FileDialog.SAVE);frame.setMenuBar(bar);event();frame.setVisible(true);}private void event(){//窗口退出功能frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});//菜单退出功能exitItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.exit(0);}});//菜单打开功能loadItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){load.setVisible(true);String dir = load.getDirectory();String fileName = load.getFile();File file = new File(dir,fileName);//文件不存在返回if(!file.exists() && file.isDirectory())return;BufferedReader bufr = null;try{bufr = new BufferedReader(new FileReader(file));String line = "";ta.setText("");while((line=bufr.readLine())!=null)ta.append(line+"\r\n");bufr.close();//方便观看,不再处理}catch (IOException oe){throw new RuntimeException(oe);}}});//菜单的保存功能saveItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(savefile==null){String dir = save.getDirectory();String fileName = save.getFile();save.setVisible(true);savefile = new File(dir,fileName);if(!savefile.exists() && savefile.isDirectory())return;writeToFile();}else{writeToFile();}}});}//封装写入文件的方法private void writeToFile(){try{BufferedWriter bufw = new BufferedWriter(new FileWriter(savefile));String text = ta.getText();bufw.write(text);bufw.close();}catch (IOException ie){throw new RuntimeException(ie);}}public static void main(String[] args) {new java();}
}
二.Swing
简介:在Awt基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全有Java实现。增强了移植性,属于轻量级的组件。系统依赖性弱
位置:java.Swing包
特:eclipse这个软件是用Swt这个外观包,由IBM小组独立开发的外观包
三.事件监听机制
特点:你会发现事件监听机制这个过程和异常处理 try、catch有点像
1.事件源
(1)事件源(GUI里指的是组件)
2.事件
(2)事件(时间是一类复杂的事物,所以定义为对象。GUI里指的是鼠标或者键盘点击Event,表示对事件源的操作)
3.监听器
(3)监听器(Listener,一个对象,其中定义接收各种Event参数类型的方法)
4.事件处理
(4)事件处理(监听器中每个方法的方法体)
位置:在java.awt.event包中
5.窗口监听器(Window)
5.1 WindowListener接口
方法摘要 | |
---|---|
void | windowActivated(WindowEvent e) 将 Window 设置为活动 Window 时调用。(处于系统界面层次最前端时的事件) |
void | windowClosed(WindowEvent e) 因对窗口调用 dispose 而将其关闭时调用。 |
void | windowClosing(WindowEvent e) 用户试图从窗口的系统菜单中关闭窗口时调用。 |
void | windowOpened(WindowEvent e) 窗口首次变为可见时调用。 |
5.2 WindowAdapter抽象类
<1>.特点:实现WindowListener接口,虽然是抽象类却没有定义抽象方法,只是实现接口的方法而已,此类中方法为空
<2>.意义:这种抽象类称为适配器,存在意义主要是继承它可以让子类不用强制复写全部方法,复写其中几个有用的方法即可
6.活动监听器(Button)
6.1 ActionListener接口
特点:因为只有一个方法,所以没有适配器。只有少数的监听器没有适配器
方法摘要 | |
---|---|
void | actionPerformed(ActionEvent e) 发生操作时调用。(按钮只要被活动,不管是鼠标还是键盘或者其他什么,按钮只要被活动即传入活动事件,调用此方法) |
7.鼠标监听器 Component
7.1 MouseListener接口
方法摘要 | |
---|---|
void | mouseClicked(MouseEvent e) 鼠标按键在组件上单击(按下并释放)时调用。(优先于活动监听器执行) |
void | mouseEntered(MouseEvent e) 鼠标进入到组件上时调用。(光标移动到组件区域) |
void | mouseExited(MouseEvent e) 鼠标离开组件时调用。(光标离开组件区域) |
void | mousePressed(MouseEvent e) 鼠标按键在组件上按下时调用。(鼠标按下) |
void | mouseReleased(MouseEvent e) 鼠标按钮在组件上释放时调用。(鼠标释放) |
7.2 MouseAdapter抽象类
(1)监听器适配器类,不过有自己的特殊方法
7.3 MouseEvent类
注1:此类封装了鼠标事件属性的类
字段摘要 | |
---|---|
static int | BUTTON1 指示鼠标按键 #1;由 getButton() 使用。(左键) |
static int | BUTTON2 指示鼠标按键 #2;由 getButton() 使用。(右键) |
static int | BUTTON3 指示鼠标按键 #3;由 getButton() 使用。(中键) |
方法摘要 | |
---|---|
int | getClickCount() 返回与此事件关联的鼠标单击次数。 |
8.键盘监听器 Component
8.1 KeyListener接口
方法摘要 | |
---|---|
void | keyPressed(KeyEvent e) 按下某个键时调用此方法。 |
void | keyReleased(KeyEvent e) 释放某个键时调用此方法。 |
8.2 KeyAdapter抽象类
(1)监听器适配器类,不过有自己的特殊方法
8.3 KeyEvent类
注1:此类封装了键盘事件属性的类,所以键盘上众多按键在此类中都被封装为了成员变量,如下所示
注2:键盘只能在当前事件源上做操作
字段摘要 | |
---|---|
static int | VK_0 VK_0 到 VK_9 与 ASCII 的‘0’到‘9’(0x30 - 0x39) 相同 |
static int | VK_A VK_A 到 VK_Z 与 ASCII 的‘A’到‘Z’(0x41 - 0x5A) 相同 |
static int | VK_ENTER |
方法摘要 | |
---|---|
char | getKeyChar() 返回与此事件中的键关联的字符。(返回单个字符,不够用则返回?) |
int | getKeyCode() 返回与此事件中的键关联的整数 keyCode。 |
static String | getKeyText(int keyCode) 返回描述 keyCode 的 String,如 "HOME"、"F1" 或 "A"。(因为键盘上的按键字符有的不只有一个,所以有这个返回字符串的方法) |
8.4 InputEvent类
注1:此类是MouseEvent与KeyEvent的父类,相同功能向上抽取得到的类
方法摘要 | |
---|---|
boolean | isControlDown() 返回 Control 修饰符在此事件上是为 down。 |
void | consume() 使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件。(屏蔽某个按键可以用此方法。不会用默认的方式处理该事件,文本框内输入此方法,输入没有效果,字符不会进入文本框中) |
更多推荐
Java基础——GUI
发布评论