day22视频
1. Graphical User Interface
java为GUI提供的对象都存在 java.AWT 和 javax.Swing 两个包中
java.AWT : Abstract Window Toolkit 抽象窗口工具包
需要调用本地系统方法实现功能,移植性差,依赖系统。 重量级控件
javax.Swing
在AWT基础上,建立的一套图形界面系统,提供了更多的组件,完全由java实现。移植性好,轻量级控件
Eclipse 是基于SWT开发的
图形用户界面库包含3个要素: 组件 布局 事件
Component:组件
Container:容器
Panel:面板
Frame:框架
Dialog:对话框
Checkbox:复选框
2.布局管理器
容器的组件的排放方式,就是布局。
常见布局管理器:
FlowLayout 流式布局: 从左到右的顺序排列,Panel默认的布局管理器
BorderLayout 边界布局管理器:东西南北中, Frame默认的布局管理器
GridLayout 网格布局管理器: 规则的网格
CardLayout 卡片布局管理器: 选项卡
GridBagLayout 网格包布局管理器:非规则的网格
3.创建图形化界面的基本步骤:
1.创建窗体
2.对窗体进行基本设置: 比如大小、位置、布局
3.定义组件
4.将组件添加到窗体中
5.设置窗体可视化
4.事件监听机制的特点:
1.事件源: awt包或swing包中的图形界面组件
2.事件: 每个事件源都有自己的特有对应事件和共性事件
3.监听器:将可以触发某一个事件的动作都已经封装到监听器中
---以上3者在java中都定义好了
4.事件处理:
public class AwtDemo { public static void main(String[] args) { // TODO Auto-generated method stub Frame f = new Frame("my awt"); f.setSize(500,400); f.setLocation(300, 400); f.setLayout(new FlowLayout()); Button b = new Button("我是一个按钮"); f.add(b); // WindowListener是一个用于接收窗口事件的监听器器接口 //WindowAdapter是其子类,但是它的所有方法是空实现的,所有需要自己定义 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.out.println("窗口关闭啦"); System.exit(0); } @Override public void windowActivated(WindowEvent e) { System.out.println("窗口激活了"); } @Override public void windowOpened(WindowEvent e) { System.out.println("窗口开启了"); } }); f.setVisible(true); } }
5.给按钮添加监听器:
//让按钮具备退出程序的功能 //由于按钮的监听器接口ActionListener只有一个方法,所有它没有适配器 b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { System.out.println("按钮关闭了程序"); System.exit(0); } });
6.鼠标和键盘事件:
由于鼠标和键盘是通用的,所有Component方法中有添加其监听器的方法。
//接口 MouseListener有适配器类 MouseAdapter b.addMouseListener(new MouseListener() { @Override public void mouseReleased(MouseEvent e) { // System.out.println("鼠标释放了"); } @Override public void mousePressed(MouseEvent e) { // System.out.println("鼠标按下了"); } @Override public void mouseExited(MouseEvent e) { // System.out.println("鼠标离开来了"); } @Override public void mouseEntered(MouseEvent e) { // System.out.println("鼠标进入了"); } @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount()==2){ System.out.println("鼠标双击了"); } if(e.getClickCount()==1) System.out.println("鼠标单击"); } });
键盘事件:
b.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { System.out.println(e.getKeyChar()+"---"+e.getKeyCode()); //使用字段来判断输入的键值 if(e.getKeyCode()==KeyEvent.VK_ENTER) System.exit(0); //判断组合键发出的命令== if(e.isAltDown() &&e.getKeyCode()==KeyEvent.VK_ESCAPE) System.exit(0); } }); tf.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { System.out.println(e.getKeyCode()); int code = e.getKeyCode(); if(code<KeyEvent.VK_0 || code>KeyEvent.VK_9){ System.out.println(e.getKeyCode()+"非法"); e.consume(); //此方法可以禁止输入非法内容 } } });
7.对话框 Dialog
private Dialog d; private Label lab; private Button okBut; //Dialog(Dialog owner, String title, boolean modal) //modal表示当对话框弹出时,是否允许用户输入到其他窗口; true为不允许 d = new Dialog(f,"提示信息-self",true); d.setBounds(400,200,240,150); d.setLayout(new FlowLayout()); lab = new Label(); okBut = new Button("确定"); d.add(lab); d.add(okBut);
String info = "您输入的信息:"+dirPath+"是错误的。请重输"; lab.setText(info); d.setVisible(true);
Dialog默认是不可见的,当关闭时,只需要再次设置为不可见:
okBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d.setVisible(false); } });
8.菜单
菜单相关的类有3个: MenuBar Menu MenuItem
private MenuBar mb; private Menu menu,subMenu; private MenuItem closeItem,subItem,openItem,saveItem; subMenu.add(subItem); //向菜单menu添加子菜单、菜单条目 menu.add(subMenu); menu.add(saveItem); menu.add(openItem); menu.add(closeItem); //向菜单栏添加一个菜单 mb.add(menu);
子菜单可以指向n个菜单条目
9. 文件对话框的调用:
private FileDialog openDia,saveDia; private File file; //FileDialog.LOAD表示打开文件对话框,是已经定义好的,直接拿来用 openDia = new FileDialog(f, "打开文件", FileDialog.LOAD); saveDia = new FileDialog(f, "保存文件", FileDialog.SAVE);
10.命令行下可执行jar包的制作: 如何制作可以双击执行的jar包?
- 1,将多个类封装到了一个包(package)中: javac -d 目录路径 MyMenuTest.java
- 2,定义一个jar包的配置信息。
定义一个文件a.txt 。文件内容内容为:
Main-Class:(空格)包名.类名(回车) - 3,打jar包:
jar -cvfm my.jar a.txt 包名 - 4,通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息。
这里双击jar包就可以执行了,它是用javaw打开执行的,对于非GUI程序,无法双击执行
win7+是没有这个选项的:
通过工具--文件夹选项--文件类型--jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序。
jdkinjavaw.exe -jar
使用安装程序安装的JDK,不用手动修改文件夹选项。
11.Eclipse环境下可执行jar包的制作:
- 在eclipse中选择要导出的类或者package,右击,选择Export子选项;
- 在弹出的对话框中,选择java文件---选择JAR file,单击next
- 在JAR file后面的文本框中选择你要生成的jar包的位置以及名字,注意在Export generated class files and resources和Export java source files and resources前面打上勾,单击next。
- 到达JAR Manifest Specification。注意在最底下的Main class后面的文本框中选择你的jar包的入口类。单击Finish,完成。