gui_guid - CSDN
gui 订阅
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。 [1]  图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。 [1] 展开全文
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。 [1]  图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。 [1]
信息
外文名
GUI
作    者
Xerox(施乐)
中文名
图形用户接口
全    称
Graphical User Interface
GUI定义
70年代,美国施乐公司的研究人员开发出了第一个图形用户界面,这样的设计使得计算机实现了字符界面向图形界面的转变,开启了新的纪元。从此以后,微软、苹果等操作系统陆续出现,界面设计不断完善,操作系统的不断更新变化也将图形用户界面设计带进新的时代。那么,图形用户界面到底是什么呢?图形用户界面是采用图形方式显示的一种信息交换的媒介。用户通过窗口、按键、菜单等图形对象向计算机等电子设备发出指令,其接收指令后,通过图形反馈操作的结果。科学技术的发展,使得各类通讯、电子产品应运而生,图形用户界面也广泛应用于智能手机、家用电器等具有信息交换、储存、处理功能的电子信息产品。 [2]  传统的字符界面操作复杂,非专业的用户难以理解和操作。在图形用户界面中,用户不需要学习复杂的代码,而是可以通过其中的图形对象进行操作,电子产品收到操作指令后,对用户进行结果的反馈,反馈的结果即用户接收到的信息也是图形对象,因此用户无须具备专业知识和操作技能就能够实现操作。作为一种界面显示格式,对于非专业用户来说,GUI设计极大地方便了其操作。 [2] 
收起全文
精华内容
参与话题
  • GUI(图形用户界面)

    千次阅读 2017-10-27 10:52:38
    一、GUI(图形用户界面) 1、GUI Graphical User Interface(图形用户接口)。 用图形的方式,来显示计算机操作的界面,这样更方便更直观。 2、CLI Command line User Interface (命令行用户接口) 就是常见的Dos命令行...
    一、GUI(图形用户界面)
    1、GUI
    Graphical User Interface(图形用户接口)。
    用图形的方式,来显示计算机操作的界面,这样更方便更直观。
    2、CLI
    Command line User Interface (命令行用户接口)
    就是常见的Dos命令行操作。
    需要记忆一些常用的命令,操作不直观。
    3、举例:
    比如:创建文件夹,或者删除文件夹等
    
    二、awt和swing包的概述
    1、java.awt:Abstract Window ToolKit (抽象窗口工具包),
          需要调用本地系统方法实现功能。属重量级控件。
    2、javax.swing:在AWT的基础上,建立的一套图形界面系统,
          其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
    三、GUI继承体系图
    四、GUI案例
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象
    		Frame f = new Frame("窗体关闭案例");
    
    		// 设置窗体标题
    		f.setTitle("HelloWorld");
    //		// 设置窗体大小
    //		f.setSize(400, 300); // 单位:像素
    //		// 设置窗体位置
    //		f.setLocation(400, 200);
    		// 设置窗体属性
    		f.setBounds(400, 200, 400, 300);
    
    		// 用适配器类改进
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 设置窗体可见
    		f.setVisible(true);
    	}
    }
    


    展开全文
  • GUI是什么

    千次阅读 2018-10-05 08:54:09
    GUI是什么 1.GUI是什么–简介  GUI的全称为Graphical User Interface,图形化界面或图形用户接口,是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为...

    GUI是什么
    1.GUI是什么–简介
      GUI的全称为Graphical User Interface,图形化界面或图形用户接口,是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。

    2.GUI是什么–组成
      图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。GUI的组成部分主要分为以下几部分:

    桌面—在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。

    视窗—应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。

    单一文件界面—在窗口中,一个数据在一个窗口内完成的方式。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。

    多文件界面—在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。

    标签—多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。

    菜单—将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。

    按钮—菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。

    3.GUI是什么–实现方法
      针对特定的图形设备输出接口,自行开发相关的功能函数。购买针对特定嵌入式系统的图形中间软件包。采用源码开放的嵌入式GUI系统。使用独立软件开发商提供的嵌入式GUI产品。

    实现GUI界面的准则主要包括:减少用户的认知负担、保持界面的一致性、满足不同目标用户的创意需求、用户界面友好性、图标识别平衡性、图标功能的一致性、建立界面与用户的互动交流等。

    4.GUI是什么–用途
      GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。主要用于手机通讯移动产品、电脑操作平台、软件产品、PDA产品、数码产品、车载系统产品、智能家电产品、游戏产品、产品的在线推广等领域。

    展开全文
  • GUI(图形界面编程)

    万次阅读 多人点赞 2018-08-27 08:32:23
    (1)GUI 与CLI  GUI  •Graphical User Interface(图形用户接口)。  •用图形的方式,来显示计算机操作的界面,这样更方便更直观。  CLI  •Command line User Interface (命令行用户接口)  •就是...

    (1)GUI 与CLI

         GUI

              •Graphical User Interface(图形用户接口)。

              •用图形的方式,来显示计算机操作的界面,这样更方便更直观。

        CLI

              •Command line User Interface (命令行用户接口)

              •就是常见的Dos命令行操作。

              •需要记忆一些常用的命令,操作不直观。

          
        (2)相关的两个包:        

         java.awt

               Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。

         javax.swing

              在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
      

       (3)GUI的继承体系
            组件:组件就是对象
                容器组件:是可以存储基本组件和容器组件的组件。
                基本组件:是可以使用的组件,但是必须依赖容器。

       
        (4)事件监听机制
            事件源:事件发生的地方

            事件:就是要发生的事情

            事件处理:就是针对发生的事情做出的处理方案

            事件监听器:就是把事件源和事件关联起来
        (5)适配器模式
            接口
            抽象适配器类
            实现类
        (6)案例:
            A:创建窗体案例

    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象
    		// Frame f = new Frame();
    		// Frame(String title)
    		Frame f = new Frame("林青霞");
    
    		// 设置窗体标题
    		f.setTitle("HelloWorld");
    		// 设置窗体大小
    		f.setSize(400, 300); // 单位:像素
    		// 设置窗体位置
    		f.setLocation(400, 200);
    
            // 一个方法搞定
    		//f.setBounds(400, 200, 400, 300);
    
    		// 调用一个方法,设置让窗体可见
    		f.setVisible(true);
    
    		// System.out.println("helloworld");
    	}
    }


            B:窗体关闭案例

    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象
    		Frame f = new Frame("窗体关闭案例");
    
    		// 设置窗体属性
    		f.setBounds(400, 200, 400, 300);
    
    		// 让窗体关闭
    		//事件源
    		//事件:对窗体的处理
    		//事件处理:关闭窗口(System.exit(0));
    		//事件监听
    //		f.addWindowListener(new WindowListener() {
    //			@Override
    //			public void windowOpened(WindowEvent e) {
    //			}
    //			
    //			@Override
    //			public void windowIconified(WindowEvent e) {
    //			}
    //			
    //			@Override
    //			public void windowDeiconified(WindowEvent e) {
    //			}
    //			
    //			@Override
    //			public void windowDeactivated(WindowEvent e) {
    //			}
    //			
    //			@Override
    //			public void windowClosing(WindowEvent e) {
    //				System.exit(0);
    //			}
    //			
    //			@Override
    //			public void windowClosed(WindowEvent e) {
    //			}
    //			
    //			@Override
    //			public void windowActivated(WindowEvent e) {
    //			}
    //		});
    		
    		//用适配器类改进
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 设置窗体可见
    		f.setVisible(true);
    	}
    }


            C:窗体添加按钮并对按钮添加事件案例。

    /*
     * 针对用户操作的四种功能
     */
    public interface UserDao {
    	public abstract void add();
    
    	public abstract void delete();
    
    	public abstract void update();
    
    	public abstract void find();
    }
    
    public class UserDaoImpl implements UserDao {
    
    	@Override
    	public void add() {
    		System.out.println("添加功能");
    	}
    
    	@Override
    	public void delete() {
    		System.out.println("删除功能");
    	}
    
    	@Override
    	public void update() {
    		System.out.println("修改功能");
    	}
    
    	@Override
    	public void find() {
    		System.out.println("查找功能");
    	}
    
    }
    

     /*
     * 问题:
     *         接口(方法比较多) -- 实现类(仅仅使用一个,也得把其他的实现给提供了,哪怕是空实现)
     *         太麻烦了,
     * 解决方案:
     *         接口(方法比较多) -- 适配器类(实现接口,仅仅空实现) -- 实现类(用哪个重写哪个)
     */

     

    public abstract class UserAdapter implements UserDao {
    
    	@Override
    	public void add() {
    	}
    
    	@Override
    	public void delete() {
    	}
    
    	@Override
    	public void update() {
    	}
    
    	@Override
    	public void find() {
    	}
    
    }
    
    public class UserDaoImpl2 extends UserAdapter {
    	@Override
    	public void add() {
    		System.out.println("添加功能");
    	}
    }
    

     

    
    public class UserDaoDemo {
    	public static void main(String[] args) {
    		UserDao ud = new UserDaoImpl();
    		ud.add();
    		// 我没有说我们需要四种功能都实现啊。
    		UserDao ud2 = new UserDaoImpl2();
    		ud2.add();
    	}
    }
    


                界面中的组件布局。

    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象
    		Frame f = new Frame("添加按钮");
    		// 设置属性
    		f.setBounds(400, 200, 400, 300);
    		// 设置布局为流式布局
    		f.setLayout(new FlowLayout());
    
    		// 创建按钮对象
    		Button bu = new Button("点我啊");
    		// bu.setSize(20, 10);
    
    		// 把按钮添加到窗体
    		f.add(bu);
    
    		// 设置窗体可以关闭
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		bu.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.out.println("你再点试试");
    			}
    		});
    
    		// 窗体显示
    		f.setVisible(true);
    	}
    }


            D:把文本框里面的数据转移到文本域

    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    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;
    
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象
    		Frame f = new Frame("数据转移");
    		// 设置窗体属性和布局
    		f.setBounds(400, 200, 400, 300);
    		f.setLayout(new FlowLayout());
    
    		// 创建文本框
    		final TextField tf = new TextField(20);
    		// 创建按钮
    		Button bu = new Button("数据转移");
    		// 创建文本域
    		final TextArea ta = new TextArea(10, 40);
    
    		// 把组件添加到窗体
    		f.add(tf);
    		f.add(bu);
    		f.add(ta);
    
    		// 设置窗体关闭
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 对按钮添加事件
    		bu.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// 获取文本框的值
    				String tf_str = tf.getText().trim();
    				// 清空数据
    				tf.setText("");
    
    				// 设置给文本域
    				// ta.setText(tf_str);
    				// 追加和换行
    				ta.append(tf_str + "\r\n");
    				
    				//获取光标
    				tf.requestFocus();
    			}
    		});
    
    		// 设置窗体显示
    		f.setVisible(true);
    	}
    }
    


            E:更改背景色

    import java.awt.Button;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象
    		final Frame f = new Frame("更改背景色");
    		// 设置窗体属性和布局
    		f.setBounds(400, 200, 400, 300);
    		f.setLayout(new FlowLayout());
    
    		// 创建四个按钮
    		Button redButton = new Button("红色");
    		Button greenButton = new Button("绿色");
    		Button buleButton = new Button("蓝色");
    
    		// 添加按钮
    		f.add(redButton);
    		f.add(greenButton);
    		f.add(buleButton);
    
    		// 设置窗体关闭
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 对按钮添加动作事件
    		// redButton.addActionListener(new ActionListener() {
    		// @Override
    		// public void actionPerformed(ActionEvent e) {
    		// f.setBackground(Color.RED);
    		// }
    		// });
    
    		// 对按钮添加鼠标点击事件
    		// redButton.addMouseListener(new MouseAdapter() {
    		// @Override
    		// public void mouseClicked(MouseEvent e) {
    		// f.setBackground(Color.RED);
    		// }
    		// });
    
    		// 对按钮添加鼠标的进入事件
    		redButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseEntered(MouseEvent e) {
    				f.setBackground(Color.RED);
    			}
    		});
    
    		redButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseExited(MouseEvent e) {
    				f.setBackground(Color.WHITE);
    			}
    		});
    
    		greenButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseEntered(MouseEvent e) {
    				f.setBackground(Color.GREEN);
    			}
    		});
    
    		greenButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseExited(MouseEvent e) {
    				f.setBackground(Color.WHITE);
    			}
    		});
    
    		buleButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseEntered(MouseEvent e) {
    				f.setBackground(Color.BLUE);
    			}
    		});
    
    		buleButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseExited(MouseEvent e) {
    				f.setBackground(Color.WHITE);
    			}
    		});
    
    		// 设置窗体显示
    		f.setVisible(true);
    	}
    }
    


            F:设置文本框里面不能输入非数字字符

    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Label;
    import java.awt.TextField;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /*
     * 你输入的如果是非数字字符,就取消你键盘录入的效果。
     */
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象并设置属性
    		Frame f = new Frame("不能输入非数字字符");
    		f.setBounds(400, 200, 400, 300);
    		f.setLayout(new FlowLayout());
    
    		// 创建Label标签对象
    		Label label = new Label("请输入你的QQ号码,不能是非数字,不信你试试");
    		TextField tf = new TextField(40);
    
    		// 添加到窗体上
    		f.add(label);
    		f.add(tf);
    
    		// 设置窗体关闭
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 给文本框添加事件
    		tf.addKeyListener(new KeyAdapter() {
    			@Override
    			public void keyPressed(KeyEvent e) {
    				// 如果你取得的字符不是数字字符就取消事件
    				// 思路:先获取字符,判断字符,取消事件
    				// char getKeyChar()  
    				char ch = e.getKeyChar();
    //				System.out.println(ch);
    				if(!(ch>='0' && ch<='9')){
    					e.consume();
    				}
    			}
    		});
    
    		// 设置窗体可见
    		f.setVisible(true);
    	}
    }


            G:一级菜单

    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /*
     * 一级菜单
     */
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象并设置属性
    		Frame f = new Frame("一级菜单");
    		f.setBounds(400, 200, 400, 300);
    		f.setLayout(new FlowLayout());
    
    		// 创建菜单栏
    		MenuBar mb = new MenuBar();
    		// 创建菜单
    		Menu m = new Menu("文件");
    		// 创建菜单项
    		MenuItem mi = new MenuItem("退出系统");
    
    		// 谁添加谁呢
    		m.add(mi);
    		mb.add(m);
    
    		// 设置菜单栏
    		f.setMenuBar(mb);
    
    		// 设置窗体关闭
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    
    		mi.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 设置窗体可见
    		f.setVisible(true);
    	}
    }


            H:多级菜单

    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.IOException;
    
    /*
     * 多级菜单
     */
    public class FrameDemo {
    	public static void main(String[] args) {
    		// 创建窗体对象并设置属性
    		final Frame f = new Frame("多级菜单");
    		f.setBounds(400, 200, 400, 300);
    		f.setLayout(new FlowLayout());
    		
    		final String name = f.getTitle();
    
    		// 创建菜单栏
    		MenuBar mb = new MenuBar();
    		// 创建菜单
    		Menu m1 = new Menu("文件");
    		Menu m2 = new Menu("更改名称");
    		// 创建菜单项
    		final MenuItem mi1 = new MenuItem("好好学习");
    		final MenuItem mi2 = new MenuItem("天天向上");
    		MenuItem mi3 = new MenuItem("恢复标题");
    		MenuItem mi4 = new MenuItem("打开记事本");
    		MenuItem mi5 = new MenuItem("退出系统");
    
    		// 谁添加谁呢
    		m2.add(mi1);
    		m2.add(mi2);
    		m2.add(mi3);
    		
    		m1.add(m2);
    		m1.add(mi4);
    		m1.add(mi5);
    		
    		mb.add(m1);
    
    		// 设置菜单栏
    		f.setMenuBar(mb);
    
    		// 设置窗体关闭
    		f.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    		
    		mi1.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				f.setTitle(mi1.getLabel());
    			}
    		});
    		
    		mi2.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				f.setTitle(mi2.getLabel());
    			}
    		});
    		
    		mi3.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				f.setTitle(name);
    			}
    		});
    		
    		mi4.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				Runtime r = Runtime.getRuntime();
    				try {
    					r.exec("notepad");
    				} catch (IOException e1) {
    					e1.printStackTrace();
    				}
    			}
    		});
    
    		mi5.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
    
    		// 设置窗体可见
    		f.setVisible(true);
    	}
    }

     

    展开全文
  • Java-GUI快速入门

    万次阅读 多人点赞 2020-03-13 01:14:52
    1.GUI的介绍 1.1GUI概述 1.2Java提供了三个主要包做GUI开发: 2.Swing组件 2.1顶层容器介绍 2.2中间容器 2.3基本组件 3.API介绍 3.1Jframe组件 3.2Panel组件 3.3功能组件 4.案例代码 4.1UI介绍 4.2代码...

    目录

    1.GUI的介绍

    1.1GUI概述

    1.2Java提供了三个主要包做GUI开发:

    2.Swing组件

    2.1顶层容器介绍

    2.2中间容器

    2.3基本组件

    3.API介绍

    3.1Jframe组件

    3.2Panel组件

    3.3功能组件

    4.案例代码

    4.1UI介绍

    4.2代码

    5.插件介绍WindowBuilder

    5.1搜索WindowBuilder

    5.2.在eclipse的中安装

    5.3WindowBuilder插件的使用


    1.GUI的介绍

    1.1GUI概述

      早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。
      后来,Microsoft公司推出了风靡全球的Windows操作系统,它凭借着优秀的图形化用户界面,一举奠定了操作系统标准的地位。这也造就了世界首富---比尔.盖茨和IT业的泰山北斗微软公司。
      在这图形用户界面风行于世的今天,一个应用软件没有良好的GUI是无法让用户接受的。而Java语言也深知这一点的重要性,它提供了一套可以轻松构建GUI的工具。在本章和下一章中,我们将向你充分证明这一点。

    1.2Java提供了三个主要包做GUI开发:

    java.awt 包 – 主要提供字体/布局管理器

    javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)

    java.awt.event 包 – 事件处理,后台功能的实现。

     

    2.Swing组件

    如图所示:swing组件主要可分为三个部分,后面会详细介绍

    (1)顶层容器::常用有JFrame,JDialog

    (2)中间容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel结尾。

    (3)基本组件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。

    2.1顶层容器介绍

    #         

    组件         

    描述

    1         

    JFrame         

    一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器

    2         

    JDialog         

    对话框

    2.2中间容器

    #         

    组件         

    描述

    1         

    JPanel (相当于div)

    一般轻量级面板容器组件(作为JFrame中间容器)

    2         

    JScrollPane         

    带滚动条的,可以水平和垂直滚动的面板组件

    3         

    JSplitPane         

    分隔面板

    4         

    JTabbedPane         

    选项卡面板

    5         

    JLayeredPane         

    层级面板

     

    2.3基本组件

    #         

    组件         

    描述

    1         

    JLabel

    标签

    2         

    JButton         

    按钮

    3         

    JRadioButton         

    单选按钮

    4         

    JCheckBox         

    复选框

    5         

    JToggleButton         

    开关按钮

    6         

    JTextField         

    文本框

    7         

    JPasswordField         

    密码框

    8         

    JTextArea         

    文本区域

    9         

    JComboBox         

    下拉列表框

    10         

    JList         

    列表

    11         

    JProgressBar         

    进度条

    12         

    JSlider         

    滑块

     

    3.API介绍

    3.1Jframe组件

    JFrame frame = new JFrame("HelloWorldSwing");

      // 创建及设置窗口

    frame.setDefaultLookAndFeelDecorated(true);

     // 确保一个漂亮的外观风格

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    设置默认的关闭窗口

    frame.pack();

       // 显示窗口

    frame.setVisible(true);

    //这个最好放在最后,不然会出现视图看不到的情况

    frame.setBounds(600, 300, 500, 400);

    设置窗口的x,y位置,窗口大小x,y.

    frame.add(panel)

    添加panel面板到容器

    frmIpa.getContentPane().add(panel, BorderLayout.NORTH);

    添加面板到主窗口,布局在北面

    frmIpa.getContentPane().add(scrollPane, BorderLayout.CENTER);

    添加可滚动面板到主窗口,布局在中间

     

     

    3.2Panel组件

    Jpanel

    JPanel panel = new JPanel();

    创建面板容器

    panel.add(button);

    添加按钮到面板

    JOptionPane

    JOptionPane.showMessageDialog(panel3, "没有选中任何文件", "提示", JOptionPane.WARNING_MESSAGE);

    弹出提示框到panel容器

    JScrollPane

    JScrollPane scrollPane = new JScrollPane();

    创建可滚动面板

    scrollPane.setViewportView(textArea);

    设置面板内容

     

    3.3功能组件

    JLabel

     JLabel label = new JLabel("Hello World");

    添加标签

    Jbutton

    JButton button = new JButton("选择文件");

    创建按钮

    button.addActionListener(new ActionListener() {}

    添加操作按钮后的事件监听器

    JFileChooser

     jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );

    // 设置文件对话框

    jfc.showSaveDialog(frmIpa);

    // 显示打开的文件对话框

    jfc.getSelectedFile();

    // 获取选择器选择的文件

    JTextArea

    JTextArea textArea = new JTextArea();

    创建文本区域

    textArea.setText(content);

    设置内容

    4.案例代码

    这个UI是用来读取ipa文件info.plist中的信息,有需要的朋友可以去下面链接看看

    https://blog.csdn.net/qq_42035966/article/details/82086462

    4.1UI介绍

    主窗口Jframe,

        Jframe添加2个Jpanel面板,

             北面Jpanel添加JButton,JButton打开JFileChooser文件对话框。

             中间JScrollPane添加JTextArea文本区域,文本区域按各自业务逻辑来处理。

     

    4.2代码

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    
    public class IpaUI {
    	public static JFrame frmIpa;
    	public JTextArea textArea;
    
    	public IpaUI() {
    		// 窗口框架
    		frmIpa = new JFrame();
    		frmIpa.setTitle("ipa工具类");
    		frmIpa.setBounds(600, 300, 500, 400);
    		frmIpa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		// 面板1
    		JPanel panel = new JPanel();
    		frmIpa.getContentPane().add(panel, BorderLayout.NORTH);
    		JButton button = new JButton("选择文件");
    		// 监听button的选择路径
    		button.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// 显示打开的文件对话框
    				JFileChooser jfc = new JFileChooser();
    				jfc.showSaveDialog(frmIpa);
    				try {
    					// 使用文件类获取选择器选择的文件
    					File file = jfc.getSelectedFile();//
    					//这里是我的业务需求,各位不必照抄
    //					String content = IpaService.getIpaInfoMap(file.toString());
    //					textArea.setText(content);
    				} catch (Exception e2) {
    					JPanel panel3 = new JPanel();
    					JOptionPane.showMessageDialog(panel3, "没有选中任何文件", "提示", JOptionPane.WARNING_MESSAGE);
    				}
    			}
    		});
    		panel.add(button);
    
    		// 可滚动面板
    		JScrollPane scrollPane = new JScrollPane();
    		frmIpa.getContentPane().add(scrollPane, BorderLayout.CENTER);
    		textArea = new JTextArea();
    		scrollPane.setViewportView(textArea);
    		//这个最好放在最后,否则会出现视图问题。
    		frmIpa.setVisible(true);
    	}
    
    }
    ​

     

    5.插件介绍WindowBuilder

        总算骗大家看完文章,其实最方便的方法是用插件制作,当然大家先了解完代码原理是最好的哈哈。eclispe安装windowbuilder有两种方式,一种是离线安装,一种是在线安装。

    5.1搜索WindowBuilder

    找到http://www.eclipse.org/windowbuilder/download.php

    根据自己的eclipse版本选择,因为我的是4.8版本了,所以只能在线安装。

     

    5.2.在eclipse的中安装

    (1)选择Help - Eclipse MarketPlace

    (2) 在商店中搜索windowbuilder ,会出现WindowBuilder插件

    (3)一路下一步,进行安装,等待安装结束重启eclipse即可。

     

    5.3WindowBuilder插件的使用

    (1)在Eclipe菜单中File - New -Other ,选中WindowBuilder - Swing Designer - JFrame。

    (2)打开文件,点击左下角的Design进入视图模式,左边对应代码模式

    左上是整个视图结构,左下是单个结构的属性,可以在这里修改窗口的一些属性,

    中间是整个swing的界面按钮,前面第二点介绍过的,这里就不说了,

    右边就是视图了,可以点击按钮往视图里面添加,如下图。

    展开全文
  • MATLAB 编写GUI进行图像处理

    万次阅读 多人点赞 2018-06-29 10:14:03
    GUI,即图形用户接口,是MATLAB的可视化操作功能,本文编写一个简单GUI进行图像处理。1、新建GUI文件,点击file-&gt;new-&gt;GUI如下图所示点击GUI后出现如下图界面,默认为Blank GUI (Default)选项,点击OK...
  • GUI

    2019-09-04 16:25:16
    GUIGUI绘图基础编写HelloWorld程序绘制登录框 GUI绘图基础      GUI是Unity3D绘制UI的原始方法,只要在组件的OnGUI方法中调用绘图方法,便可以在游戏界面上绘制贴图、文字、按钮、滚动条等多种元素。...
  • GUI程序设计原理

    万次阅读 多人点赞 2017-09-03 15:31:54
    GUI(Graphical User Interface)即图形用户接口,是指用图形方式显示计算机操作的用户界面。相比于早期的计算机使用的命令行,图形界面对于用户来讲更易于接受。1. 命令行应用程序  命令行应用程序是一种基于顺序...
  • Unity 常用脚本:OnGUI(一)GUI

    万次阅读 2019-05-15 14:25:00
    OnGUI是Unity中通过代码驱动的GUI系统 主要用来创建调试工具、创建自定义属性面板、创建新的Editor窗口和工具达到扩展编辑器效果。 OnGUI不建议使用在项目UI中。 布局上,坐标系原点在屏幕左上角。 ...
  • 什么是GUI测试

    万次阅读 2018-06-12 10:19:05
    用户界面(UI)测试初学者指南本指南介绍了有关GUI测试的关键问题:它是什么?它为什么如此重要?什么是主要的GUI测试类型和技术?阅读此综合指南以发现这些问题的答案,并学习如何创建GUI测试计划并编写GUI测试用例...
  • MATLAB GUI界面编程——一些细节问题

    万次阅读 多人点赞 2019-01-17 09:34:28
    本篇博文主要对自己在进行MATLAB GUI设计时遇到的一些细节问题进行总结,点击下面目录中的相关问题,可以直接跳转至相应位置。另外,需要声明的是,我所使用的MATLAB版本——MATLAB R2017a。 目录 一、使用MATLAB...
  • MATLAB GUI设计快速入门实例

    千次阅读 2019-11-27 10:47:15
    时间:2019.11.27 目的: 课题需要设计一个界面 为了实现课题的一个功能,...1、进入GUI 设计界面:在命令行输入guide,创建一个空白的GUI,保存即可,在保存目录下会生成两个文件(.fig和.m)。然后进入编辑界面...
  • https://blog.csdn.net/weixin_32759777/article/details/104658869 通过上面的直播通信方式 可以实现多个程序多台电脑互相协作一个业务 可以说是微服务也不为过
  • Git可视化教程——Git Gui的使用

    万次阅读 多人点赞 2019-12-03 19:50:45
    Git可视化教程——Git Gui的使用
  • Python GUI教程一:Hello World

    万次阅读 2019-02-09 21:45:31
    Python GUI教程一:Hello World Author:yooongchun ,Email:yooongchun@foxmail.com 摘要:这篇文章是Python GUI教程系列的第一篇,将介绍如何在Python环境下安装PyQt5以及实现第一个界面程序:Hello World ...
  • jd-gui.exe反编译查看工具包官方绿色版

    万次下载 热门讨论 2020-07-30 23:32:31
    jd-gui.exe 工具类 用于查看反编译的jar包
  • Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别 目录 车牌图像数据集 视频动态演示 核心代码 相关文章Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别Matlab:基于Matlab通过GUI实现自动...
  • 基于matlabGUI的语音处理

    万次阅读 热门讨论 2013-12-31 14:03:24
    先用matlabGUI设计好界面 我的界面: 菜单界面 运行后于是就出现了这样的效果 下一步就是问题的核心为这些按钮添加回调函数callback 下面贴出我的程序和注释: function init_Callback(hObject
  • Python学习之GUI--登录系统界面篇

    万次阅读 多人点赞 2019-12-31 11:41:29
    这里我选择的GUI编程包是:tkinter tkinker在python2.5以后就是自带包了,所以我们不需要另外安装 tkinker相对与其他python GUI编程的包而已,是相对容易入手的 代码篇: #这是系统的登录界面 import ...
  • C#之十八 GUI

    千次阅读 2020-02-09 22:11:49
    第1章 GUI应用程序用户界面介绍 图形用户界面(GUI),即人机交互图形化用户界面设计。Windows是典型的基于图形界面方式设计的操作系统,基于此你可以用鼠标来点击按钮等操作来和应用程序进行交互,很是方便、直观。...
  • 我们常用的软件,比如word,就有打开任意路径下word文件的功能,matlabgui也可以实现这样的功能。  我们做一个gui界面,需要导入任意路径下excel文件,并对读取的excel数据进行各种分析。。。。  我们的界面实现...
1 2 3 4 5 ... 20
收藏数 421,806
精华内容 168,722
关键字:

gui