【黑马程序员】Java基础10:GUI窗体实例
来源:互联网 发布:mac奶瓶粉底液色号分类 编辑:程序博客网 时间:2024/06/03 15:03
一、GUI概述
Graphical User Interface(图形用户接口):用图形的方式,来显示计算机操作的界面,这样更方便更直观;
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
Component 类的继承关系图:
常用类介绍:
1、component是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例;Component 类是与菜单不相关的 Abstract Window Toolkit 组件的抽象超类;
2、Window对象是一个没有边界和菜单栏的顶层窗口,窗口的默认布局是 BorderLayout;
3、Frame是带有标题和边框的顶层窗口,窗体的默认布局为 BorderLayout;
4、Dialog是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入;
5、FileDialog类显示一个对话框窗口,用户可以从中选择文件;
6、Button此类创建一个标签按钮,当按下该按钮时,应用程序能执行某项动作;
7、Label对象是一个可在容器中放置文本的组件,一个标签只显示一行只读文本;
8、TextComponent类是所有允许编辑文本的组件的超类;
9、TextField对象是允许编辑单行文本的文本组件;
10、TextArea对象是显示文本的多行区域,可以将它设置为允许编辑或只读。
二、事件监听机制
事件监听机制的特点:事件源、事件、监听器、处理方式;
1、事件源:就是awt或者swing包中的那些图形界面组件;
2、事件:每一个事件源都有自己特有的对应事件和共性事件;
3、监听器:将可以触发某一个事件的动作(不只一个动作)已经封装到了监听器中;同时也封装了事件的处理方式。
在Java中,以上三者都已经定义好了,直接获取其对象利用即可,我们要做的,就是对产生的动作进行处理。
三、制作窗体的实例
要求:1、能够通过按扭和窗口X关闭窗体;
2、注入键盘和鼠标事件;
3、在窗体中创建TextField和TextArea;
4、在TextField中输入文件目录,点击按扭,在TextArea中输出目录中所有文件;
5、如果目录不存在,提未错误信息。
package blog.itheima;import java.awt.*;import java.awt.event.*;import java.io.*;class MyWindowGUI {private Frame frame;//定义一个窗体private TextField textField;//定义一个文件编辑行private TextArea textArea;//定义一个文件显示区域//定义三个按扭,跳转、确认、关闭窗体private Button go,ok,close;//定义提示信息的对话框private Dialog dialog;//对话框中要输入的内容标签,一行只读文本private Label label;//初始化本类对象MyWindowGUI(){init();}public void init(){frame = new Frame("我的窗口");/*void setBounds(int x,int y,int w,int h) 移动组件并调整其大小,由x和y指定左上角的新位置,由w和h指定宽高*/frame.setBounds(300,200,500,300);/*FlowLayout:流式布局管理器,从左到右,Panel默认的布局BorderLayout:边界布局,东,南,西,北,中,Frame默认的布局GridLayout:网格布局管理器,规则的矩阵CardLayout:卡片布局管理器,选项卡GridBagLayout:网格包布局管理器,非规则的矩阵*/frame.setLayout(new FlowLayout());//构造具有指定列数的新空文本字段,列是近似平均字符宽度,与平台有关textField = new TextField(40);//构造一个新文本区,该文本区具有指定的行数和列数,初始为空textArea = new TextArea(12,56);//定义Button的名称go = new Button("转到");close = new Button("关闭窗口");/*创建dialog对象,三个参数:dialog的所有者,标题,处理模式ture,不处理不能进行下一步;为false,可以放在一边,继续做其它事情*/dialog = new Dialog(frame,"温馨提示",true);dialog.setBounds(400,300,300,100);dialog.setLayout(new FlowLayout());//定义初始为空的标签,后续输入内容label = new Label();ok = new Button("确定");dialog.add(label);dialog.add(ok);frame.add(textField);frame.add(go);frame.add(close);frame.add(textArea);event();//把窗体设置为可见的frame.setVisible(true);}private void event(){//通过内部类,复写关闭窗口的方法,定义窗口监听,退出程序frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.out.println("窗口关闭");System.exit(0);}});/*close按扭监听,退出程序;ActionListener没有适配合器,方法只有一个,用于接收操作事件的侦听器接口。*/close.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.out.println("按扭关闭");System.exit(0);}});//ok按扭监听,如果触发,把dialog设置为不可见ok.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dialog.setVisible(false);}});//文本行键盘监听,textField.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if(e.getKeyCode()==KeyEvent.VK_ENTER)//如果输入ENTER键,调用show方法show();//同时按下Control和C,程序退出if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_C)System.exit(0);}});go.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){show();}});//在go按扭上注入鼠标事件go.addMouseListener(new MouseAdapter(){int count = 1;public void mouseClicked(MouseEvent e){//if(e.getClickCount()==2)//System.out.println("鼠标双击"+count++);System.out.println("鼠标点击"+count++);}public void mouseEntered(MouseEvent e){System.out.println("鼠标进入"+count++);}public void mouseExited(MouseEvent e){System.out.println("鼠标离开"+count++);}});}public void show(){//用文本行中得到键盘录入的数据,即目录String dirPath = textField.getText();//将目录封装成对象File dir = new File(dirPath);if(/*dir.exists() && */dir.isDirectory()){//清空文本区域,防止上次的输入残留textArea.setText("");String[] names = dir.list();for(String name : names){textArea.append(name+"\r\n");}} else {label.setText("您输入了错误路径:"+dirPath+",请重新输入");dialog.setVisible(true);}}public static void main(String[] args) {new MyWindowGUI();}}
- 【黑马程序员】Java基础10:GUI窗体实例
- 黑马程序员-java基础 GUI
- 黑马程序员-->Java基础-->GUI
- 黑马程序员--java基础--GUI
- 黑马程序员 JAVA基础--GUI
- 黑马程序员---java基础--GUI
- 黑马程序员-----Java基础-----GUI
- 黑马程序员-Java基础:GUI
- 黑马程序员---Java基础--22天(GUI)
- 黑马程序员---java基础之GUI
- 奋斗黑马程序员----Java GUI基础讲解
- 黑马程序员——Java基础---GUI
- 黑马程序员-Java基础-GUI编程
- 黑马程序员---JAVA基础---GUI(十四)
- 黑马程序员--java基础--GUI总结
- 黑马程序员--Java基础总结--GUI
- 黑马程序员——Java基础---GUI
- 黑马程序员--JAVA基础之GUI
- python2.7中minetypes.py的UnicodeDecodeError
- Ubuntu 备份和恢复系统
- Android 常用命令(图文并茂)!
- GET和POST两种请求方式的区别
- 新知识_csdn的全称
- 【黑马程序员】Java基础10:GUI窗体实例
- 摘抄笔录
- 不吃青春饭,关于程序员将来的发展方向
- DDNSLinker
- 我的2013年
- Gas Station
- Eclipse 简体中文语言包
- 如何禁用本地缓存
- Linux Shell学习小记 - function, here document, if statement, declare constant