黑马程序员--java--图形用户界面GUI
2015-03-26 22:40
253 查看
——- android培训、java培训、期待与您交流! ———-
我热爱我的热爱,并将继续坚持我的热爱,爱是我存在的理由,我会是那匹黑马。
一、GUI(图形用户界面)
GUI –Graphical User Interface(图形用户接口)。
• 用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI – Command line User Interface (命令行用户接口)
• 就是常见的Dos命令行操作。
• 需要记忆一些常用的命令,操作不直观。
举例:
• 比如:创建文件夹,或者删除文件夹等,Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
二、继承关系图
Container:为容器,是一个特殊的组件,该组件中可以通过add 方法添加其他组件进来。
Container常用子类:Window Panel(面板,不能单独存在。)
Window常用子类:Frame Dialog
三、常见布局管理
1)、布局:容器中的组件排列方式
2)、常见的布局管理器:
1)FlowLayout:流式布局管理器。从左向右排列,是Panel默认的布局管理器
2)BorderLayout:边界式布局管理器,东南西北中的排列方式,是Frame的默认布局管理器。如果窗体中只有一个组件,将会覆盖整个窗体。
3)GridLayout:网格式布局管理器,规则的矩阵
4)CardLayout:卡片式布局管理器,即选项卡
5)GridBayLayout:网格包布局管理器,非规则矩阵
3)、如果存在多种布局方式,如何创建窗体界面呢?步骤:
1)先将窗体Frame进行大区域的划分,设置其布局管理器,加入面板Panel
2)将组件加入Panel,设置面板的布局管理器。
四、简单的创建窗体过程
Container常用子类:Window Panel(面板,不能单独存在。)
Window常用子类:Frame Dialog
简单的窗体创建过程:
• Frame f = new Frame(“my window”);
• f.setLayout(new FlowLayout());
• f.setSize(500,400);//设置窗体大小
• f.setLocation(300,200);//设置窗体出现在屏幕的位置
• f.setVisible(true);
五、事件监听机制组成
事件源(组件)
事件(Event)
监听器(Listener)
事件处理(引发事件后处理方式)
事件监听机制流程图
这里写图片描述
事件监听机制:
确定事件源(容器或组件)
通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
一般用匿名内部类来表示。
在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
事件触发后会把事件打包成对象传递给该变量。(其中包括
事件源对象。通过getSource()或者,getComponent()获 取。)
事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
六、菜单:Menu
1、菜单继承关系
这里写图片描述
2、说明
1)Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem
2)MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。
3)MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。
4)菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。
5)通过setMenuBar()方法,将菜单添加到Frame中。
我热爱我的热爱,并将继续坚持我的热爱,爱是我存在的理由,我会是那匹黑马。
一、GUI(图形用户界面)
GUI –Graphical User Interface(图形用户接口)。
• 用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI – Command line User Interface (命令行用户接口)
• 就是常见的Dos命令行操作。
• 需要记忆一些常用的命令,操作不直观。
举例:
• 比如:创建文件夹,或者删除文件夹等,Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
二、继承关系图
Container:为容器,是一个特殊的组件,该组件中可以通过add 方法添加其他组件进来。
Container常用子类:Window Panel(面板,不能单独存在。)
Window常用子类:Frame Dialog
三、常见布局管理
1)、布局:容器中的组件排列方式
2)、常见的布局管理器:
1)FlowLayout:流式布局管理器。从左向右排列,是Panel默认的布局管理器
2)BorderLayout:边界式布局管理器,东南西北中的排列方式,是Frame的默认布局管理器。如果窗体中只有一个组件,将会覆盖整个窗体。
3)GridLayout:网格式布局管理器,规则的矩阵
4)CardLayout:卡片式布局管理器,即选项卡
5)GridBayLayout:网格包布局管理器,非规则矩阵
3)、如果存在多种布局方式,如何创建窗体界面呢?步骤:
1)先将窗体Frame进行大区域的划分,设置其布局管理器,加入面板Panel
2)将组件加入Panel,设置面板的布局管理器。
四、简单的创建窗体过程
Container常用子类:Window Panel(面板,不能单独存在。)
Window常用子类:Frame Dialog
简单的窗体创建过程:
• Frame f = new Frame(“my window”);
• f.setLayout(new FlowLayout());
• f.setSize(500,400);//设置窗体大小
• f.setLocation(300,200);//设置窗体出现在屏幕的位置
• f.setVisible(true);
五、事件监听机制组成
事件源(组件)
事件(Event)
监听器(Listener)
事件处理(引发事件后处理方式)
事件监听机制流程图
这里写图片描述
事件监听机制:
确定事件源(容器或组件)
通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
一般用匿名内部类来表示。
在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
事件触发后会把事件打包成对象传递给该变量。(其中包括
事件源对象。通过getSource()或者,getComponent()获 取。)
事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
/*建立一上类似QQ登入的界面*/ package nuddles.j2seDemo; import java.awt.*; import java.awt.event.*; class FrameDemo{ // 创建工具类 private Frame frame; private Button button; private TextField tf; FrameDemo(){ init(); } public void init(){ // 初始化方法 frame = new Frame("my frame"); button = new Button("my button"); tf = new TextField(20); frame.setBounds(300,100,600,500); frame.setLayout(new FlowLayout()); frame.add(tf); frame.add(button); myEvent(); // 调用事件监听方法 frame.setVisible(true); } private void myEvent(){ // 窗口关闭事件 frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); button.addActionListener(new ActionListener(){ //按钮事件 int count = 0; public void actionPerformed(ActionEvent e){ count++; System.out.println("button clicked"+count); if (count>=5) { System.exit(0); } } }); tf.addKeyListener(new KeyAdapter(){ // 键盘事件 public void keyPressed(KeyEvent ke){ int code = ke.getKeyCode(); System.out.println("haha"); if (code<KeyEvent.VK_0||code>KeyEvent.VK_9) { ke.consume(); System.out.println("these are not numbers"); } } }); button.addMouseListener(new MouseAdapter(){ // 鼠标事件 public void mouseClicked(MouseEvent e){ if (e.getClickCount()==2) { System.exit(0); } } }); button.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ int code = e.getKeyCode(); if (e.isControlDown()&&code==KeyEvent.VK_ENTER) { System.exit(0); } } }); } public static void main(String[] args) { new FrameDemo(); } }
六、菜单:Menu
1、菜单继承关系
这里写图片描述
2、说明
1)Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem
2)MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。
3)MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。
4)菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。
5)通过setMenuBar()方法,将菜单添加到Frame中。
/* 练习: 创建菜单项,打开,保存,退出 打开文件显示文本区域中。 */ import java.awt.*; import java.awt.event.*; import java.io.*; public class MyMenuTest{ private Frame f; private MenuBar bar; private TextArea ta; private Menu fileMenu; private MenuItem openItem,saveItem,closeItem; private FileDialog openDia,saveDia; private File file; MyMenuTest(){ init(); } public void init(){ f = new Frame("my window"); f.setBounds(300,100,650,600); bar = new MenuBar(); ta = new TextArea(); fileMenu = new Menu("文件"); openItem = new MenuItem("打开"); saveItem = new MenuItem("保存"); closeItem = new MenuItem("退出"); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(closeItem); bar.add(fileMenu); f.setMenuBar(bar); openDia = new FileDialog(f,"我要打开",FileDialog.LOAD); saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE); f.add(ta); myEvent(); f.setVisible(true); } private void myEvent(){ saveItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(file==null){ saveDia.setVisible(true); String dirPath = saveDia.getDirectory(); String fileName = saveDia.getFile(); if(dirPath==null || fileName==null) return ; file = new File(dirPath,fileName); } try{ BufferedWriter bufw = new BufferedWriter(new FileWriter(file)); String text = ta.getText(); bufw.write(text); //bufw.flush(); bufw.close(); } catch (IOException ex){ throw new RuntimeException(); } } }); 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); if(dirPath==null || fileName==null) return ; ta.setText(""); file = new File(dirPath,fileName); try{ BufferedReader bufr = new BufferedReader(new FileReader(file)); String line = null; while((line=bufr.readLine())!=null){ ta.append(line+"\r\n"); } bufr.close(); } catch (IOException ex){ throw new RuntimeException("读取失败"); } } }); closeItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { new MyMenuTest(); } }
相关文章推荐
- 黑马程序员java学习—GUI(图形用户界面)
- 黑马程序员Java培训、Android培训_第8讲GUI/图形用户界面-1
- 黑马程序员-Java语言基础– GUI 图形用户界面 第22天
- 黑马程序员__JAVA基础__GUI(图形用户界面)
- 黑马程序员-12-java-GUI图形用户界面(2)-GUI事件响应机制
- 黑马程序员—java基础—GUI图形用户界面编程
- 黑马程序员----java的GUI图形用户界面及编程基础
- 黑马程序员Java培训、Android培训_第8讲GUI/图形用户界面-2
- 黑马程序员,Java基础知识九:GUI图形用户界面
- 黑马程序员——【Java基础】——GUI(图形用户界面)
- 黑马程序员 Java基础<十一>---> GUI(图形用户界面)
- 黑马程序员_Java图形用户界面GUI
- 黑马程序员Java培训、Android培训_第8讲GUI/图形用户界面-4
- 黑马程序员—java基础学习--GUI( 图形用户界面 )
- 黑马程序员_java GUI图形用户界面
- 黑马程序员-java基础(八)-图形用户界面GUI
- 黑马程序员——Java基础---GUI(图形用户界面)
- 黑马程序员Java培训、Android培训_第8讲GUI/图形用户界面-5
- 黑马程序员—20—java基础:有关GUI图形用户界面学习笔记和学习心得体会
- 黑马程序员--java技术--GUI图形用户界面