GUI英文全称为Graphical User Interface(图形用户界面)
CLI英文全称为Command Line User Interface(命令行用户接口)
在java中图形界面用两个包分别是Awt和Swing
java.awt:Abstract Window Toolkit(抽象窗口工具包)需要调用本地系统方法实现功能,属于重量级控件。
javax.swing:在awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全是java实现的,增强了移植性,属于轻量级控制,跨平台强
继承关系图:
Component|-------Container
|-------Window
|-------Frame窗体
|-------Dialog对话框
|------FileDialog文件对话框
|--------Panel
|------Button
|------Lable
|------Checkbox
|------TextComponent
|------TextArea
|------TextField
Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来
常见的布局管理器:
FlowLayout(流式布局管理器)
1、从左到右顺序排列
2、Danel默认的布局管理器
BorderLayout(边界布局管理器)
1、排列方式是一次是东南西北中
2、Frame默认的布局管理器
GridLayout(网格布局管理器)
1、规则的juzhen
CardLayout(卡片布局管理器)
1、选择卡
GridBagLayout(网格包布局管理器)
1、非规则的矩阵
做图形界面一定要先画出布局在用程序画出
图形化界面是由另一个线程控制的
Frame默认为边界布局
setSize(大小)
setLocation(位置)
setLayout(布局模式)
add(添加控件)
setVisible(true)显示
事件监听器机制的组成:
事件监听器机制的特点:
1、事件源:就是awt和swing包中的哪些图形界面的组件
2、事件:每一个事件源都有自己所对应的事件和共性事件
3、监听器:将可以触发的某一事件的动作都已封装到了监听器中
以上三者,在java中都已封装好了,直接获取其对象来用就可以了
4、事件处理:这要自己实现
下面是一个GUI的程序:
package jar;
import java.awt.*;
import java.awt.event.*;
class MyMenuTest
{
private Frame f;
private MenuBar mb;
private Menu mainMenu;
private Menu closeMenu;
private Menu childMenu;
private MenuItem menuItem;
private MenuItem menuItem1;
private FileDialog fdLoad;
private FileDialog fdSave;
MyMenuTest()
{
init();//初始化窗体
}
public void init()
{
f=new Frame("我的窗口");//创建一个带有我的窗口的窗口
f.setBounds(300,100,600,500);//设置窗口的位置和大小
mb=new MenuBar();//创建一个菜单栏
mainMenu=new Menu("文件");//创建一个菜单
childMenu=new Menu("操作");//创建一个子菜单
menuItem=new MenuItem("打开");//创建一个菜单选项
menuItem1=new MenuItem("保存");
childMenu.add(menuItem);//将菜单选项添加到菜单上
childMenu.add(menuItem1);
mainMenu.add(childMenu);将子菜单添加到菜单上
closeMenu=new Menu("关闭");
mb.add(mainMenu);
mb.add(closeMenu);
f.setMenuBar(mb);//将菜单栏添加到窗口上
fdLoad=new FileDialog(f,"打开",FileDialog.LOAD);//创建一个打开文件的窗口
fdSave=new FileDialog(f,"保存",FileDialog.SAVE);//创建一个保存文件的窗口
MyEvent();//调用事件方法
f.setVisible(true);//显示窗体
}
public void MyEvent()
{
f.addWindowListener(new WindowAdapter(){//为窗体添加监听事件
public void windowClosing(WindowEvent e)
{
System.exit(0);//关闭程序
}
});
menuItem.addActionListener(new ActionListener()//为菜单选项添加监听事件,注意菜单是不可以添加监听事件的
{
public void actionPerformed(ActionEvent e)
{
fdLoad.setVisible(true);
}
});
menuItem1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
fdSave.setVisible(true);
}
});
}
public static void main(String[] args)
{
new MyMenuTest();//创建窗体对象
}
}
如何打jar包,并实现双击自动运行
1、将多个类文件包含在包中
2、创建一个文本文件在里面写上
Main-Class:空格+包名.类名+换行
例如类名为:a.txt
3、打jar包
jar -cvfm my.jar a.txt 包名
4、通过解压程序看jar包中的信息
5、需要要配置关联文件,将其与jdk\bin\javaw.exe关联
6、可以双击了