您的位置:首页 > 产品设计 > UI/UE

黑马程序员—Java图形化界面 GUI

2014-04-14 22:44 513 查看
------- android培训java培训、期待与您交流! ----------

 

 

GUI: 

* GUI :Graphical User Interface:图形用户接口。

 *  CLI :Command Line User Interface:命令行用户接口。

 *

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

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

 *

 *  创建图形化界面:

 *  1.创建Frame窗体。

 *  2.对窗体进行基本设置。比如,大小、位置、宽高

 *  3.定义组件。比如:按钮等等

 *  4.通过窗体的add方法将组件添加到窗体中来

 *  5.让窗体显示setVisible

 *

 *  事件监听机制的特点:

 *  1.事件源。

 *  2.事件。

 *  3.监听器。

 *  4.事件处理。

 事件监听机制流程图:


 

 *  事件源:就是Awt包或者Swing包中那些图形界面组件。

 *  事件:每一个事件源都有自己的特有的对应事件和共性事件。

 *  监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中。

 *  以上三者在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 GraphicalUserInterface
{
public static void main(String[] args)
{
//创建窗体,设置title主题名为My awt!
Frame fr = new Frame("My awt!");

fr.setSize(500, 300);//设置宽和高
fr.setLocation(200, 200);//设置本地位置,x,y坐标

//创建一个按钮,按钮上的文字为   提交按钮。
Button b = new Button("提交按钮");
//把按钮加入窗体
fr.add(b);

fr.setVisible(true);//设置窗体可显示
fr.setLayout(new FlowLayout());//设置布局管理,FlowLayout流式布局管理

//把窗体事件监听注册到窗体事件源
fr.addWindowListener(new WindowAdapter() {
//监听窗口关闭事件
public void windowClosing(WindowEvent e)
{
//监听到到窗口关闭事件时要执行的操作
System.out.println("关闭窗口!");
System.exit(0);
}
//监听窗口激活事件
public void windowActivated(WindowEvent e)
{
//监听到到窗口被激活时要执行的操作
System.out.println("我被激活了!");
}
//监听窗口被打开事件
public void windowOpened(WindowEvent e)
{
//监听到窗口被打开时要执行的操作
System.out.println("我被打开了!");
}
});//把事件监听注册到窗体。

System.out.println("hello world!");
}
}

运行效果:



 

 

 

文件浏览器的小案例:

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.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

//窗体、文本框、文本域综合类
public class FrameTextFieldButtonTest
{
//定义系列属性
private Frame fr;
private TextField tf;
private Button bu;
private TextArea ta;

//实际开发这些属性应该定义在监听事件处理方式里面,当用户误操作时创建这些对象,因为如果用户使用过程中没有误操作
//而这些对象又一直存在,将会占用一部分内存资源,是没有必要的。这里是为了直观,所以把成员属性都定义在一个地方方便管理。
private Dialog dl;
private Label la;
private Button okBut;

//构造函数,加载窗体、按钮、文本框、文本域对象
public FrameTextFieldButtonTest()
{
init();
}
//创建窗体、按钮、文本框、文本域按钮
public void init()
{
//创建一个窗体对象,title为 My window
fr = new Frame("My Window");
//设置窗体x、y坐标以及宽度和高度
fr.setBounds(200, 200, 500, 300);

//创建文本框对象,初始化列数为20
tf = new TextField(20);
//创建控件对象,控件标签为    转到
bu = new Button("转到");
//创建文本域对象
ta = new TextArea();

//把文本框、控件、文本域对象分别加入窗体
fr.add(tf);
fr.add(bu);
fr.add(ta);

//创建对话窗口对象
dl = new Dialog(fr, "错误!", true);
//设置对话口的x、y坐标以及宽和高
dl.setBounds(300, 300, 300, 100);
//设置对话窗口里控件的布局为流式布局
dl.setLayout(new FlowLayout());

//创建文本组件对象
la = new Label();
//创建 确认 按钮对象
okBut = new Button("确定");

//把文本组件和确认按钮组件都添加到对话窗体里面
dl.add(la);
dl.add(okBut);

//设置窗体可显示
fr.setVisible(true);
//设置窗体内控件为流式布局
fr.setLayout(new FlowLayout());

//调用监听事件方法
MyEvent();
}
//监听事件方法
public void MyEvent()
{
//窗体事件监听对象注册到窗体事件源
fr.addWindowListener(new WindowAdapter() {
//监听窗体的关闭事件
public void windowClosing(WindowEvent e)
{
//监听到窗体关闭事件时要执行关闭窗体动作
System.exit(0);
}
});

//把活动事件监听注册到按钮件事件源
bu.addActionListener(new ActionListener() {

//监听按钮上的活动事件
public void actionPerformed(ActionEvent e)
{
//若监听到按钮上有活动,就调用显示文件目录的功能函数
showDir();
}
});

//对话窗口对象添加窗口事件监听
dl.addWindowListener(new WindowAdapter() {

//监听窗口关闭事件
public void windowClosing(WindowEvent e)
{
//若监听到对话窗关闭事件,就隐藏对话窗口
dl.setVisible(false);
}
});

//对话窗里面的确认按钮添加活动事件监听
okBut.addActionListener(new ActionListener() {

//监听确认按钮的活动事件
public void actionPerformed(ActionEvent e)
{
//监听到确认按钮的活动事件后,隐藏对话窗口
dl.setVisible(false);
}
});

//对话窗里面的确认按钮添加键盘监听事件
okBut.addKeyListener(new KeyAdapter() {

//监听键盘按下事件
public void keyPressed(KeyEvent e)
{
//若监听到按下了   Enter  键时。执行隐藏对话窗口操作
if (e.getKeyCode() == KeyEvent.VK_ENTER)
dl.setVisible(false);
}
});

//文本框添加键盘监听事件
tf.addKeyListener(new KeyAdapter() {

//监听键盘按下键事件
public void keyPressed(KeyEvent e)
{
//若监听到键盘上按下  Enter  键时。就执行显示文件目录的功能函数
if (e.getKeyCode() == KeyEvent.VK_ENTER)
showDir();
}
});
}

//显示文本目录的功能函数
private void showDir()
{
//获取文本框里面的字符串并记录
String dirPath = tf.getText();
//把字符串封装成文件对象
File file = new File(dirPath);
//判断文件对象是否存在并且是否是一个目录
if (file.exists() && file.isDirectory())
{
//如果文件对象存在并且是一个目录,就清空文本域的内容
ta.setText("");
//把文件对象里面的文件和目录全部转换成字符串数组
String[] files = file.list();
//遍历字符数组,获取每个文件或目录
for (String fileName : files)
//每获取到一个文件或目录就加入文本域里,并且换行一次
ta.append(fileName+"\r\n");
}
else
{
//			//如果文件对象不存在或者不是一个目录,就在文本域输出提示。
//			ta.setText("没有此目录或者文件");

//定义一个提示信息
String info = "输入的目录"+dirPath+"不存在或者不是目录!请重新输入!";
//把提示信息设置为在对话窗里的文本组件的显示内容
la.setText(info);
//显示对话窗口
dl.setVisible(true);
}
}

//主函数
public static void main(String[] args)
{
//调用窗体、文本框、控件、文本域对象以及监听事件方法
new FrameTextFieldButtonTest();
}
}

运行效果:



 

 

 

模拟记事本的小案例:

import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

//定义一个我的菜单栏演示类
public class MyMenuDemo
{
//定义一系列主窗体、菜单条、菜单、子菜单、文件打开以及保存对话框、文本域对象、文件对象
private Frame frame;
private MenuBar menubar;
private Menu menu, menu2, menu3, menu4;
private MenuItem menuitem, menuitem2, openItem, saveItem;
private FileDialog openDialog, saveDialog;
private TextArea textArea;
private File file;

//构造函数,初始化窗体以及各个组件
public MyMenuDemo()
{
init();
}
//窗体以及组件的实例化
public void init()
{
//创建主窗体对象。并设置x、y坐标以及宽高
frame = new Frame("主窗体");
frame.setBounds(200, 200, 600, 500);

//创建菜单条对象
menubar = new MenuBar();
//创建文本域对象
textArea = new TextArea();
//创建菜单对象
menu = new Menu("文件");
menu2 = new Menu("新建");
menu3 = new Menu("project");
menu4 = new Menu("编辑");
//创建子菜单对象
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
menuitem = new MenuItem("退出");
menuitem2 = new MenuItem("java project");
//把菜单条加入主窗体
frame.setMenuBar(menubar);
//文本域加进主窗体
frame.add(textArea);
//菜单加入菜单条
menubar.add(menu);
menubar.add(menu4);
//在菜单上添加一系列菜单以及子菜单
menu.add(menu2);
menu.add(openItem);
menu.add(saveItem);
menu2.add(menu3);
menu3.add(menuitem2);
menu.add(menuitem);
//创建打开和保存对话框对象
openDialog = new FileDialog(frame, "我打开了文件", FileDialog.LOAD);
saveDialog = new FileDialog(frame, "我保存文件", FileDialog.SAVE);
//设置主窗体为可显示状态
frame.setVisible(true);
//调用监听事件
MyEvent();
}
//监听事件方法
public void MyEvent()
{
//窗体事件监听注册到主窗体源事件上
frame.addWindowListener(new WindowAdapter() {
//监听到窗体关闭事件时要执行的操作
public void windowClosing(WindowEvent e)
{
//退出主窗体
System.exit(0);
}
});

//活动事件监听注册到(退出)子菜单事件源上
menuitem.addActionListener(new ActionListener() {
//监听活动事件
public void actionPerformed(ActionEvent e)
{
//监听到活动事件执行关闭程序
System.exit(0);
}
});

//活动事件监听注册到 (打开)子菜单上
openItem.addActionListener(new ActionListener() {
//监听活动事件
public void actionPerformed(ActionEvent e)
{
//监听到活动事件后显示显示文件对话框
openDialog.setVisible(true);
//获取用户选择的文件的路径
String dirPath = openDialog.getDirectory();
//获取用户选择的文件名
String fileName = openDialog.getFile();
//打印路径和文件名到控制台
System.out.println(dirPath+fileName);

//如果文件路径为空或者文件名为空,就不执行本事件监听的处理方法
if (dirPath == null || fileName == null)
return;
//清空文本域
textArea.setText("");
//如果文件路径和文件名都不为空,就把文件路径和文件名封装成一个文件对象
file = new File(dirPath, fileName);
//初始化输入字符流缓冲区
BufferedReader bufr = null;
try
{
//实例化输入字符流缓冲区,关联要操作的文件为用户在打开文件对话框里面选择的文件
bufr = new BufferedReader(new FileReader(file));
//定义line变量记录输入流缓冲区读到的字符串
String line = null;
//循环一行一行的从输入流缓冲区中读取字符串用line变量记录
while ((line = bufr.readLine()) != null)
{
//把line变量记录的一行字符串添加到文本域,每添加一行就换行
textArea.append(line+"\r\n");
}
}
//处理异常
catch (IOException e1)
{
//抛出Runtime异常和提示
throw new RuntimeException("读取文件失败!");
}
//最后一定要关闭输入流,释放底层资源
finally
{
//如果流流资源不为空,就关闭它
if (bufr != null)
try
{
//关闭流资源
bufr.close();
}
//处理异常
catch (IOException e1)
{
//抛出Runtime异常和提示
throw new RuntimeException("输入流资源失败!");
}
}
}
});
//活动事件监听注册到(保存)菜单的事件源上
saveItem.addActionListener(new ActionListener() {
//监听活动事件
public void actionPerformed(ActionEvent e)
{
//如果要保存的路径和文件名为空
if (file == null)
{
//显示保存文件对话框
saveDialog.setVisible(true);
//获取文件要保存的路径
String dirPath = saveDialog.getDirectory();
//获取文件要保存的名字
String fileName = saveDialog.getFile();
//如果文件路径和文件名其中有一者为空的话,那么就结束监听机制的处理方法
if (dirPath == null || fileName == null)
return;
//如果文件路径和文件名不为空,就把这个文件路径以及文件名封装成对象
file = new File(dirPath, fileName);
}
//初始化输出字符流缓冲区
BufferedWriter bufw = null;
try
{
//实例化输出字符流缓冲区,指定要写入的字符要存入要file对象中
bufw = new BufferedWriter(new FileWriter(file));
//获取文本域中的字符串
String text = textArea.getText();
//将文本域中的字符串全部写入指定file文件
bufw.write(text);
}
//处理异常
catch (IOException e1)
{
//抛出Runtime异常,并给出提示
throw new RuntimeException("存储文件失败!");
}
//最后一定要关闭输出流,释放底层资源
finally
{
//如果输出流资源不为空,就关闭它
if (bufw != null)
try
{
//关闭输出流资源
bufw.close();
}
//处理异常
catch (IOException e1)
{
//抛出Runtime异常并给出提示
throw new RuntimeException("关闭输出流资源失败!");
}
}
}
});
}
//主函数
public static void main(String[] args)
{
//调用我的菜单项目
new MyMenuDemo();
}
}

运行效果:


 

 

------- android培训java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: