黑马程序员:JavaGUI

来源:互联网 发布:软件项目主要技术指标 编辑:程序博客网 时间:2024/05/22 05:30
------- android培训、java培训、期待与您交流! ----------


一、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();}}


 

0 0
原创粉丝点击