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

原创 2015年07月08日 14:24:16

                                                                 ------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的父类MenuItem
		m.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培训、期待与您交流! -------

版权声明:本文为博主原创文章,未经博主允许不得转载。

《黑马程序员》java笔记->GUI(图形用户界面)

------- android培训、java培训、期待与您交流! ---------- GUI(图形用户界面) GUI Graphical User Interface(图形用户接口...
  • bb175pt
  • bb175pt
  • 2013年06月16日 19:07
  • 772

黑马程序员——Java GUI(图形用户界面)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  GUI(图形用户界面) 一、概述  1....

黑马程序员——day22GUI图形用户界面

----------------------    android培训    java培训   期待与您交流!    ----------------------    GUI    * ...

黑马程序员——31,GUI图形用户界面

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  黑马程序员31——GUI图形用户界面 一:大致介绍----> CLI:Comm...

黑马程序员——GUI 图形用户界面

------ >Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------      GUI图形用户界面,全称Graphical User Interface...
  • hpu186
  • hpu186
  • 2015年05月02日 20:17
  • 183

黑马程序员——图形用户界面GUI

------- android培训、java培训、期待与您交流! ---------- 第一讲     GUI(图形用户界面) 一、概述 1、GUI:GraphicalUser ...

黑马程序员——15Java图形用户界面GUI

------------android培训、java培训、期待与您交流!------------   1,GUI——Graphical User Interface(图形用户接...

黑马程序员——Java基础---GUI(图形用户界面)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- GUI 概述: 1、GUI:Graphical User Interface,即图形用户界面,用于计算机...
  • gyk767
  • gyk767
  • 2015年06月08日 20:37
  • 184

黑马程序员_Java图形用户界面GUI

-------    android培训、java培训、期待与您交流! ----------     GUI(Graphical User Interface)图形用户接口。用图形的方式,来显示...

黑马程序员-GUI图形用户界面

GUI 图形用户界面 java为GUI提供了对象都存在Java.Awt和javax.Swing两个包   Flow Layout(流式布局管理器)  从左到右的顺序排列  Panel默认的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——GUI图形用户界面-整理笔记
举报原因:
原因补充:

(最多只允许输入30个字)