GUI:(Graphical Vser Interface 图形用户接口)是指采纳图形形式显示的计算机操作用户界面。GUI便捷、精确,实用性很强,次要性能是实现人与计算机等电子设备的人机交互。
Java为GUI提供的对象java.Awt和javax.Swing两个包中。
1)java.Awt:
Abstract Window ToolKit (形象窗口工具包),须要调用本地零碎办法实现性能。属重量级控件。
2)javax.Swing:
在AWT的根底上,建设的一套图形界面零碎,其中提供了更多的组件,而且齐全由Java实现。加强了移植性,属轻量级控件。
长处:
(1)swing领有一个丰盛、便捷的用户界面元素汇合。
(2)swing对平台的依赖很小,意味着他有很少的对于平台的bug。
(3)给予用户统一的感觉。给予用户统一的感觉。
继承关系图:
Component:组件
Checkbox:复选框
TextComponen:文本组件,文本框和文本域。
Container:为容器,是一个非凡的组件,该组件中能够通过add办法增加其余组件进来。
Button:按钮标签,当按下该按钮时,应用程序能执行某项动作;
Label:是一个可在容器中搁置文本的组件,一个标签只显示一行只读文本;
Checkbox:复选框是一个可处于“开”(true) 或“关”(false) 状态的图形组件。单击复选框可将其状态从“开”更改为“关”,或从“关”更改为“开”;
Frame:是带有题目和边框的顶层窗口;
TextComponent:是所有容许编辑文本的组件的超类;
Window:是一个没有边界和菜单栏的顶层窗口。窗口的默认布局是 BorderLayout;
Panel :面板,是最简略的容器类。应用程序能够将其余组件放在面板提供的空间内,这些组件包含其余面板;
Frame: 是带有题目和边框的顶层窗口;
Dialog:对话框, 带题目和边界的顶层窗口,边界个别用于从用户处取得某种模式的输出;
FileDialog :文本对话框,用户能够从中抉择文件;
常见的布局管理器:
1)FlowLayout:
流式布局管理器,从左到右的顺序排列,Panel默认的布局管理器。
构造方法:
① FlowLayout()
结构一个新的 FlowLayout,居中对齐,默认的程度和垂直间隙是 5 个单位。
② FlowLayout(intalign)
结构一个新的 FlowLayout,对齐形式是指定的,默认的程度和垂直间隙是 5 个单位。
③ FlowLayout(intalign, int hgap, int vgap)
创立一个新的流布局管理器,具备指定的对齐形式以及指定的程度和垂直间隙。
2)BorderLayout:
边界布局管理器,东,南,西,北,中,Frame默认的布局管理器。
结构形式:
① BorderLayout()
结构一个组件之间没有间距的新边界布局。
②BorderLayout(int hgap, int vgap)
用指定的组件之间的程度间距结构一个边界布局。
3)GridLayout:
网格布局管理器,规定的矩阵。
结构形式:
①GridLayout()
创立具备默认值的网格布局,即每个组件占据一行一列。
② GridLayout(int rows, int cols)
创立具备指定行数和列数的网格布局。
③GridLayout(int rows, int cols, int hgap, int vgap)
创立具备指定行数和列数的网格布局,并将程度和垂直间距设置为指定值。
4)CardLayout:
卡片布局管理器,选项卡。
5)GridBagLayout:
网格包布局管理器,非规定的矩阵。
创立图形化界面步骤:
- 创立fame窗体;
Frame f = new Frame(“窗体名”); - 对窗体进行根本设置,例如大小,地位,布局;
①调整组件大小:
void setSize(int width , int height);
【宽为width,长为height】②组建挪动到指定地位:
void setLocation(int x , int y);③ 设置容器的布局治理:
voidsetLayout(LayoutManager mgr); - 定义组件;
例:Button b = new Button(“组件名称”); - 将组建通过窗体的add形式增加到窗体中;
- 让窗体显示: void setVisible(boolean b)
例:
import java.awt.*;
class AwtDemo
{
public static void main(String[] args)
{
//定义Frame对象,并在参数地位传入窗体名
Frame f = new Frame("我的窗体");
//定义窗体大小
f.setSize(300,300);
//设置窗体的地位
f.setLocation(400,300);
//指定布局管理器
f.setLayout(new FlowLayout());
//定义一个按钮组件,并在参数中传入组件名称
Button b = new Button("我是按钮");
//将组建增加到窗体中
f.add(b);
//让窗体显示
f.setVisible(true);
}
}
事件监听机制:
1,事件监听机制的特点:
(1)事件源(组件):就是awt包和swing包中的那些图形界面组件
(2)事件(Event):每个事件源都有本人特有的对应事件和共性事件。
(3)监听器(Listener):将能够触发某一个事件的动作(不只一个动作)都封装在监听器中。
(4)事件处理:
实现窗体敞开性能实例:
import java.awt.*;
import java.awt.event.*;
class AwtDemo2
{
public static void main(String[] args)
{
//定义Frame对象,并在参数地位传入窗体名
Frame f = new Frame("我的窗体");
//定义窗体大小
f.setSize(300,300);
//设置窗体的地位
f.setLocation(400,300
//指定布局管理器
f.setLayout(new FlowLayout());
//定义一个按钮组件,并在参数中传入组件名称
Button b = new Button("我是按钮");
//将组建增加到窗体中
f.add(b);
//为窗体增加监听器,将适配器作为参数传入构造函数中,定义外部类
f.addWindowListener(new WindowAdapter()
{
//复写WindowAdapter类中的办法,创立本人的事件处理形式
//点X能够敞开窗口,并输入语句
public void windowClosing(WindowEvent e)
{
//输入语句
System.out.println("再见!");
//程序完结
System.exit(0);
}
//激活窗口时显示被激活
public void windowActivated(WindowEvent e)
{
System.out.println("我激活了!");
}
//窗口一建设就输入信息
public void windowOpened(WindowEvent e)
{
System.out.println("你好!");
}
});
//让窗体显示
f.setVisible(true);
}
}
WindowAdapter中的局部办法展现:
①void windowClosing(WindowEvent e) 窗口正处于敞开过程中调用;
②void windowActivated(WindowEvext e) 激活窗口时调用;
③void windowOpend(WindowEvent e) 关上窗口时调用;
鼠标事件和键盘事件:
import java.awt.*;
import java.awt.event.*;
class MouseAndKeyEvent {
private Frame f;
private Button but;
private TextField tf;
MouseAndKeyEvent(){
init(); //初始化GUI界面
}
public void init(){
f = new Frame("my frame");
f.setBounds(300,100,600,500); //挪动窗口到(300,100)地位,并调整大小为宽600长500.
f.setLayout(new FlowLayout()); //设为流水布局
f.setVisible(true); //显示窗口
but = new Button("退 出"); //按钮
tf = new TextField(20); //20是这个单行文本框的列数
f.add(tf); //窗口中增加文本框
f.add(but); //窗口中增加按钮
myEvent(); //事件处理
}
private void myEvent() { //事件处理
//窗体事件的解决
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//按钮的Action事件的解决。
but.addActionListener(new ActionListener(){ //匿名外部类
public void actionPerformed(ActionEvent e){
System.out.println("action ok");
}
});
//按钮的鼠标事件。
but.addMouseListener(new MouseAdapter(){ //增加鼠标监听器,匿名外部类。
private int count = 1;
private int clickcount = 1;
public void mouseEntered(MouseEvent e){ //鼠标进入but按钮的范畴,触发鼠标进入事件。
System.out.println("鼠标进入到该组件"+count++);
}
public void mouseClicked(MouseEvent e){ //双击动作
if(e.getClickCount()==2)
System.out.println("鼠标双击击事件"+clickcount++);
}
});
//键盘事件,给But增加一个键盘监听,敲键盘则按钮响应。
but.addKeyListener(new KeyAdapter(){ //匿名外部类。
public void keyPressed(KeyEvent e){
int n = e.getKeyCode();
String s = e.getKeyText(n);
System.out.println(s);
if(s.equals("Enter"))
System.out.println("回车键"+"..n:"+n+"..s:"+s);
if(e.getKeyCode()==KeyEvent.VK_ESCAPE) //应用动态常量,"Esc"键退出。
System.exit(0);
}
});
//单行文本框
tf.addKeyListener(new KeyAdapter(){ //匿名外部类。
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
System.out.println("输出不非法");
e.consume(); //不应用默认的形式解决此事件。
//应用了此办法,则键盘敲'A'时,字母'a'不会再进入文本框。
}
}
});
}
public static void main(String[] args){
new MouseAndKeyEvent();
}
}
菜单栏:
Menu:菜单,继承MenuItem,有右三角的图标存在,可增加Menu和MenuItem;
MenuBar:菜单栏,可增加菜单和菜单条目。个别先创立菜单栏,再创立菜单;
MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项;
import java.awt.*;
import java.awt.event.*;
class MyMenuDemo {
private Frame f; //窗体
private MenuBar mb; //菜单栏
private Menu m,subMenu; //菜单
private MenuItem closeItem,subItem; //菜单项
MyMenuDemo(){
init(); //初始化GUI界面
}
//初始化
public void init(){
f = new Frame("my window"); //创立框体
f.setBounds(300,100,500,600); //设置大小
f.setLayout(new FlowLayout()); //设置布局
f.setVisible(true); //显示Frame窗体
mb = new MenuBar(); //菜单栏
m = new Menu("文件"); //菜单栏中的一个菜单
subMenu = new Menu("子菜单");
closeItem = new MenuItem("退出"); //菜单下拉中的一个菜单项
subItem = new MenuItem("子条目");
m.add(closeItem); //把菜单项增加到菜单中
m.add(subMenu); //菜单中增加一个子菜单
subMenu.add(subItem); //子菜单中增加一个菜单项
mb.add(m); //把菜单增加到菜单栏中
f.setMenuBar(mb); //将此Frame窗体的菜单栏设置为指定的菜单栏
myEvent(); //事件处理
}
public void myEvent(){
//窗体监听器,点右上角的X号能敞开窗体
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//"退出"菜单项的监听,实现点击退出
closeItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new MyMenuDemo();
}
}
最初理解一下GUI应用领域:手机通信挪动产品,电脑操作平台,软件产品,车载零碎产品,智能家电产品,游戏产品,网页设计等等
谢谢大家浏览,如果想要晓得更多java基础知识,能够戳我一起交流学习!
发表回复