------- android培训、java培训、期待与您交流! ----------
GUI 图形用户接口
• CLI: Command Line User Interface GUI: Graphic User Interface
▸ 为GUI提供的对象
• java.Awt: Abstract Window Toolkit 需要调用本地系统方法,重量级控件 • java.Swing: 在Awt基础上,提供更多组件,完全由Java实现,增强了移植性,轻量级控件
▸ 继承关系图
• container:容器,可以通过add方法添加其他组件
▸ 布局管理器
• 布局:组件的排放方式 ▸ 常见的布局管理器 • FlowLayout 流式 ▸ BorderLayout 边界:默认 • 东西南北中 • 没有指定:居中,添加新组件则覆盖 • GridLayout 网格 规则的矩阵:计算器 • CardLayout 卡片式 • GridBagLayout 网格包 • 坐标式布局
▸ 创建图形化界面
AwtDemo.java • 创建Frame窗体:图形化界面由另外的线程运行 ▸ 对窗体进行基本设置 • setSize(宽, 高) • setLocation() • 定义组件 • 通过add方法添加组件 • setVisible(true)
▸ 事件监听
▸ 流程图 ▸ 组成 • 事件源(组件):awt或swing包的组件 • 事件(Event):每个事件源都有自己特有的对应事件和共性事件 • 监听器(Listener):将可以出发某一个事件的动作封装到其中 • 事件处理 ▸ 窗体事件 AwtDemo.java • addWindowListener() • WindowListener 子类需要覆盖7个方法 子类WindowAdapter已经实现该接口并重写所有方法,所以让监听类继承WindowAdapter 一般用匿名内部类表示 • public void windowClosing(windowEvent e) ... ▸ 活动事件:让按钮具备退出程序的功能 FrameDemo.java • 事件源:按钮 • 想要知道组件具备什么特有的监听器,需要查看组件对象的功能 Button支持一个特有监听器AddActionListener(ActionListener l) • public void actionPerformed(ActionEvent e) ▸ 鼠标事件 MouseAndKeyEvent.java ▸ addMouseListener(new MouseAdapter() {..}) • mouseEntered(MouseEvent e) • mouseClicked(MouseEvent e) • addActionListener(new ActionListener() {..}) 比MouseListener慢,可以用键盘等其它方式激活 • 双击:e.getClickCount==2 ▸ 键盘事件 ▸ addKeyListener(new KeyAdapter() {..}) • keyPressed(KeyEvent e) e.getKeyChar() e.getKeyCode() • KeyEvent.getKeyText(e.getKeyCode()) • Ctrl+Enter: isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER • 文本框 TextField • 取消输入的键 consume():不会按照默认方式来处理事件 ▸ 练习 MyWindowDemo.java • 组件 构造函数 布局初始化 添加监视器 重写方法 • TextArea(行, 列) • getText() setText() ▸ 对话框 Dialog:顶层窗体 • Dialog d = new Dialog(f, “提示信息-self”, true); true代表前置 • 按回车确定:addKeyListener() ▸ 菜单 MyMenuDemo.java ▸ MenuBar Menu MenuItem • 添加子菜单 subMenu.add(subItem); m.add(subMenu); ▸ 打开保存文件 FileDialog MyMenuTest.java • openDia = new FileDialog(f, “***”, FileDialog.LOAD); • dirPath = openDia.getDirectory(); fileName = openDia.getFile(); • 取消会空指针异常 if(dirPath == null || fileName == null) return; ▸ 双击执行jar包 • 添加自定义配置信息, 建立文件,比如1.txt Main-Class: mymenu.MyMenuTest 注意冒号后的空格,结尾要有回车 • jar -cvfm my.jar 1.txt mymenu • jar需要在系统中注册,操作:open javaw.exe