黑马程序员—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中都已经定义好了。
* 直接获取其对象用就可以。
*
* 我们要做的事情是,对产生的动作进行处理。
图形化界面的各种布局管理器:
实现一个简单的图形化界面:
运行效果:
文件浏览器的小案例:
运行效果:
模拟记事本的小案例:
运行效果:
------- 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培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员——Java基础--GUI图形化界面
- 黑马程序员_java GUI(图形化界面)概述
- 黑马程序员java学习笔记——GUI图形化界面
- 黑马程序员_JAVA学习日记_JAVA中图形化界面GUI编程
- 黑马程序员:Java基础总结----GUI图形化界面
- 黑马程序员:Java基础总结----GUI图形化界面
- Java图形化界面GUI-01-----黑马程序员
- 黑马程序员--Java基础学习(GUI图形化界面)第二十二天
- 黑马程序员—JAVA基础—GUI(图形化界面编程)
- Java图形化界面GUI-02-----黑马程序员
- 黑马程序员—java基础_GUI图形化界面
- 黑马程序员——Java基础--GUI(图形化界面)
- 黑马程序员----java基础图形化界面GUI
- 黑马程序员_07Java图形化界面GUI知识总结
- java之图形化界面(GUI)
- java语言基础(99)——java--GUI(图形化界面)编程
- java基础--GUI(图形化界面)
- Java基础知识 十五(GUI 图形化界面)
- 黑马程序员——Java基础——GUI图形化用户界面
- 黑马程序员—复习之GUI图形化界面