黑马程序员——GUI图形用户界面-整理笔记

来源:互联网 发布:131458com淘宝账号查询 编辑:程序博客网 时间:2024/05/16 00:51

                                                                 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、GUI介绍

        GUI

  • Graphical User Interface(图形用户接口)。
  • 用图形的方式,来显示计算机操作的界面,这样更方便更直观。

        CLI

  •  Command line User Interface (命令行用户接口)
  •  就是常见的Dos命令行操作。
  •  需要记忆一些常用的命令,操作不直观。

       Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。

  • java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
  • javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
        GUI布局管理器
             一般的的布局管理器:
                      ①FlowLayout:Panel默认的布局管理器,由左向右排列。
                      ②BorderLayout:Frame的默认布局管理器边界式布局管理器,东南西北中的组织方式,        
                      ③GridLayout:矩阵网格式
                      ④CardLayout:选项卡式布局管理器
                      ⑤GridBayLayout:不是规则矩阵布局管理器,

        主要容器为Container:

               Window窗口,单独窗体容器。可以单独使用。
               Frame:基本窗体框架。
               Dialog:对话框。
               Panel :面板容器。无法单独使用。存在于其他容器当中。

       基本组件:大部分组件设置方式类似窗体属性设置。
       主要基本组件:
                 Button:按钮
                 Checkbox:复选框
                 Choice:单选框
                 TextComponent:
                        TextArea:文本域
                        TextField:文本框(宽度设置为public TextField(int columns))

继承关系图
   


  创建图形界面的步骤:

           ①创建Frame窗体。

           ②对窗体进行基本设置。比如大小、位置、布局。
           ③定义组件。
           ④将组件通过窗体的add方法添加到窗体中。
           ⑤让窗体显示,通过setVisible(true)

示例代码:

package day8;import java.awt.Button;import java.awt.Dialog;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Label;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;public class FrameDemo {          //定义该图形中所需要的引用      private Frame f;      private Button but;            FrameDemo() {          init();      }            //对图形界面进行初始化      public void init() {          f = new Frame("这是一个窗体");          // 对frame进行基本设置          f.setBounds(300, 400, 500, 600);          f.setLayout(new FlowLayout());                  but = new Button("button");                   f.add(but);          myEvent();                  f.setVisible(true);      }            //设置事件      public void myEvent(){          //设置监听器          f.addWindowListener(new WindowAdapter() {              //设置相应的事件动作              @Override              public void windowClosing(WindowEvent arg0) {                  System.exit(0);              }          });                    //添加一个按钮,具备退出功能          //按钮就是事件源          but.addActionListener(new ActionListener() {                            public void actionPerformed(ActionEvent arg0) {                  System.exit(0);              }          });      }            public static void main(String[] args) {          new FrameDemo();      }    }  

窗体菜单代码示例:


package day8;import java.awt.*;import java.awt.event.*;import java.io.*;class MenuDemo {private Frame f;private Menu m, m1, m2;private MenuBar mb;private MenuItem closeMenu, openItem, saveItem;private FileDialog openDia, saveDia;private TextArea ta;File file = null;// 文件对象MenuDemo() {init();}public void init() {f = new Frame("菜单");// 窗体设置f.setBounds(200, 100, 600, 600);mb = new MenuBar();m = new Menu("文件");m1 = new Menu("一级菜单");m2 = new Menu("二级菜单");closeMenu = new MenuItem("退出");openItem = new MenuItem("打开");saveItem = new MenuItem("保存");saveItem.setShortcut(new MenuShortcut(KeyEvent.VK_S));// 添加快捷命令// 打开 保存 对话框openDia = new FileDialog(f, "打开", FileDialog.LOAD);saveDia = new FileDialog(f, "保存", FileDialog.SAVE);// 文本框ta = new TextArea();// 将菜单相关组件 添加到窗体f.setMenuBar(mb);// 窗体添加菜单栏setMenuBar()mb.add(m);// MenuBar菜单栏中只能添加Menu不可以添加Menu的父类MenuItemm.add(openItem);m.add(saveItem);// m.addSeparator();//添加分割线m.add(m1);m1.add(m2);m.add(closeMenu);f.add(ta);/* * 代码添加顺序就是图形的顺序 一个菜单项只有一个图形显示 当第二次添加同一个菜单项的时候 之前添加此菜单项的语句被覆盖 或者说 失效 */myEvent();f.setVisible(true);}public void myEvent() {// 为窗体添加 监听器f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});// 为菜单项 添加监听器closeMenu.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});openItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {openDia.setVisible(true);// 打开文本文件 显示内容在文本框String dirPath = openDia.getDirectory();String fileName = openDia.getFile();System.out.println(dirPath + "...." + fileName);file = new File(dirPath, fileName);if (dirPath == null || fileName == null)return;ta.setText("");BufferedReader bfr = null;// 局部变量必须赋初始值try {bfr = new BufferedReader(new FileReader(file));String line = null;while ((line = bfr.readLine()) != null) {// System.out.println(line);ta.append(line + "\r\n");// 不要忘记添加换行符号}} catch (IOException io) {throw new RuntimeException("读取失败!");} finally {try {if (bfr != null)bfr.close();} catch (IOException ec) {throw new RuntimeException("关闭失败!");}}}});// 为保存按钮添加监听 通过监听事件 执行动作:保存文本 到文件saveItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (file == null) {saveDia.setVisible(true);String dirPath = saveDia.getDirectory();String fileName = saveDia.getFile();file = new File(dirPath, fileName);}BufferedWriter bfw = null;try {bfw = new BufferedWriter(new FileWriter(file));String text = ta.getText();// 返回文本组件内的文本bfw.write(text);bfw.flush();} catch (IOException ec) {throw new RuntimeException();} finally {try {if (bfw != null)bfw.close();} catch (IOException ec) {throw new RuntimeException("guan失败!");}}}});}public static void main(String[] args) {new MenuDemo();}}



                                                  ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

0 0
原创粉丝点击