黑马程序员:JavaGUI
来源:互联网 发布:软件项目主要技术指标 编辑:程序博客网 时间:2024/05/22 05:30
一、GUI概述
GUI
Graphical User Interface(图像化用户接口)用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI
Command Line User Interface(命令行用户接口)就是常见的Dos命令行需要记忆一些常用的命令,操作不直观。
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
二、Awt与Swing
java.Awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属于重量级控件。
javax.Swing:在AWT的基础上,建立的一套图形化系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。
三、布局管理器
容器中的组件的排放方式,就是布局。
常见的布局管理器:
FlowLayout(流式布局管理器)
从左到右的顺序排放
Panel默认的布局管理器
BorderLayout(边界布局管理器)
东、南、西、北、中
Frame默认的布局管理器
Gridlayout (网格布局管理器)
规则的矩阵
GardLayout(卡片布局管理器)
选项卡
GridbagLayout(网格包布局管理器)
非规则矩阵
四、Frame
Frame 是带有标题和边界的顶层窗口。
frame 的大小包括边界指定的所有区域。边界区域的尺寸可以使用 getInsets 方法获得,但是,由于这些尺寸是与平台相关的,因此在通过调用 pack或 show 将 frame 设置为可显示的之前,无法获得有效的 insets 值。由于 frame 的总大小包括了边界区,因此边界有效地模糊了 frame 的部分区域,约束了可用于在矩形中呈现和/或显示子部件的区域,矩形左上角的位置为 (insets.left, insets.top),宽度为 width - (insets.left + insets.right),长度为 height - (insets.top + insets.bottom)。
frame 的默认布局为 BorderLayout。
创建简单的图形化界面:
1、创建frame窗体
2、对窗体进行简单的设置
3、定义组件
4、将组件添加到窗体
5、让窗体显示
例:
package com.java;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;public class AwtDemo {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubFrame frame = new Frame("我的第一个窗口");frame.setSize(500, 300);//设置窗口的长和宽frame.setLocation(300, 200);//设置窗口的初始化位置frame.setLayout(new FlowLayout());//设置布局方式Button button1 = new Button("我是一个button");// 创建buttonframe.add(button1);//添加button到frameframe.setVisible(true);//设置窗口为可见}}
五、事件监听机制组成
1、事件源(组件):awt或swing包中那些图像界面组件
2、事件对象:每一个事件源都有自己特有的对应事件和共有事件
3、监听器:将可以触发某一事件的动作都已经封装到监听器中
以上三者,在java中都已经定义好了。直接获取其器对象来用就可以了。
我们要做的事情就是对动作进行处理。
4、事件处理。
六、窗体事件
窗体关闭事件例:package com.java;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class AwtDemo {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubFrame frame = new Frame("我的第一个窗口");frame.setSize(500, 300);//设置窗口的长和宽frame.setLocation(300, 200);//设置窗口的初始化位置frame.setLayout(new FlowLayout());//设置布局方式Button button1 = new Button("我是一个button");// 创建buttonframe.add(button1);//添加button到frameframe.addWindowListener(new Mywin());frame.setVisible(true);//设置窗口为可见}}class Mywin extends WindowAdapter{public void windowClosing(WindowEvent e) {System.exit(0);}}
七、Action事件
package com.java;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class FrameDemo {/** * @param args */private Frame frame;private Button button;FrameDemo(){init();}public void init() {frame = new Frame("my frame");frame.setBounds(300,100,600,500);frame.setLayout(new FlowLayout());button = new Button("my button");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() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubSystem.out.println("exit");System.exit(0);}});}public static void main(String[] args) {// TODO Auto-generated method stubnew FrameDemo();}}
八、鼠标、键盘事件
package com.java;import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class MouseAndKey {/** * @param args */private Frame frame;private Button button;MouseAndKey(){init();}public void init() {frame = new Frame("my frame");frame.setBounds(300,100,600,500);frame.setLayout(new FlowLayout());button = new Button("my button");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() {////@Override//public void actionPerformed(ActionEvent arg0) {//// TODO Auto-generated method stub//System.out.println("exit");//System.exit(0);////}//});//鼠标事件监听button.addMouseListener(new MouseAdapter() {public void mouseEntered(MouseEvent e) {System.out.println("鼠标进入该组件");}});//键盘事件监听button.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {System.out.println(e.getKeyChar()+"..."+e.getKeyCode());if(e.getKeyCode()==KeyEvent.VK_ESCAPE){System.exit(0);}}});}public static void main(String[] args) {// TODO Auto-generated method stubnew MouseAndKey();}}
九、简单的小程序
简单的列出磁盘路径的小程序。
package com.java;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 AreaDemo {/** * @param args */private Frame frame;private Button button;private TextArea textArea;private TextField textField;private Dialog dialog;private Button okbutton;private Label label;AreaDemo(){init();}public void init() {frame = new Frame("my frame");frame.setBounds(300,100,600,500);frame.setLayout(new FlowLayout());textField = new TextField(30);button = new Button("转到");textArea = new TextArea(15,40);frame.add(textField);frame.add(button);frame.add(textArea);frame.setVisible(true);dialog = new Dialog(frame,"提示信息",true);dialog.setBounds(400,200,240,150);dialog.setLayout(new FlowLayout());label = new Label();okbutton = new Button("确定");dialog.add(label);dialog.add(okbutton);myevent();}public void myevent() {button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubString 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{String infoString = "您输入的信息:"+dirPath+"错误!请重新输入。";label.setText(infoString);dialog.setVisible(true);}}});frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});dialog.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dialog.setVisible(false);}});okbutton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubdialog.setVisible(false);}});}public static void main(String[] args) {// TODO Auto-generated method stubnew AreaDemo();}}
- 黑马程序员-------JavaGUI
- 黑马程序员-javaGUI编程
- 黑马程序员:JavaGUI
- 黑马程序员----JavaGUI
- 黑马程序员--javaGUI图形编程
- 黑马程序员-javaGUI编程总结
- 黑马程序员——javaGUI编程
- 黑马程序员-JavaGUI图形化视图
- JavaGUI
- JavaGUI
- javaGUI
- JavaGUI
- javaGUI
- JavaGUI
- javaGUI
- JavaGUI-SimpleFrameTest
- JavaGUI-Swing
- JavaGUI编程
- cocos2d XML读取
- Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常
- win8下sshd服务的安装
- java 吕才合婚算法
- arm-eabi-gcc 4.7升级后的问题
- 黑马程序员:JavaGUI
- java 合婚算法
- Android、iOS和Windows Phone中的推送技术
- C#关键字整理
- 2014台州学院ACM集训队寒假练习赛1
- 贵州警方通缉致15人死凯里赌场爆炸案嫌犯
- Linux 操作int64_t
- 类别和类扩展的区别
- 【特稿】总后副部长谷俊山被查已有两年