黑马程序员————java基础之GUI
来源:互联网 发布:在线课程网络课程 编辑:程序博客网 时间:2024/06/05 03:47
-----------android培训、java培训、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实现。增强了移植性,属轻量级控件。
继承关系图:
Component:是一个容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
布局管理器:
布局:就是容器中的组件的排放方式。
常见的布局管理器:
FlowLayout(流式布局管理器);从左到右的顺序排列。Panel默认的布局管理器。BorderLayout(边界布局管理器);排序方式:东,南,西,北,中;若窗体只有一个组件,则会覆盖整个窗体。Frame默认的布局管理器。
GridLayout(网格布局管理器);规则的矩阵
CardLayout(卡片布局管理器)选项卡
GridBagLayout(网格包布局管理器)非规则的矩阵
建立一个简单的窗体:
Container常用子类:Window Panel(面板, 不能单独存在。)
Window常用子类:Frame Dialog
简单的窗体创建步骤:
Frame f = new Frame(“my window”);//创建窗体并设置窗体名字
f.setLayout(new FlowLayout());//设置窗体布局
f.setSize(500,400);//设置窗体大小
f.setLocation(300,200);//设置窗体出现在屏幕的位置
Button b = new Button("my button"); //定义组件并设置组件名字
f.add(b);通过add()方法将组件添加进窗体
f.setVisible(true);//设置窗体是否显示
如以下代码:
<span style="font-size:12px;">import java.awt.*;class AwtDemo{public static void main(String[] args) {Frame f = new Frame("my window");f.setSize(500,400);f.setLocation(300,200);f.setLayout(new FlowLayout());Button b = new Button("my button");f.add(b);f.setVisible(true);}<strong>}</strong></span>
事件监听机制组成:
事件源(组件)
事件(Event)
监听器(Listener)
事件处理(引发事件后处理方式)
其中事件源,事件,监听器在java中都已经定义好了,可以直接获取其对象使用,我们能做就是引发事件后的处理方式。
事件监听机制流程图:
事件监听机制:
确定事件源(容器或组件)
通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
一般用匿名内部类来表示。
在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
事件触发后会把事件打包成对象传递给该变量。(其中包括 事件源对象。通过getSource()或者,getComponent()获取。)
如以下代码:
<span style="font-size:12px;">import java.awt.*;import java.awt.event.*;class FrameDemo{//定义该图形中所需的组件的引用。private Frame f;private Button but;FrameDemo(){init();}public void init(){f = new Frame("my frame");//对frame进行基本设置。f.setBounds(300,100,600,500);f.setLayout(new FlowLayout());but = new Button("my button");//将组件添加到frame中f.add(but);//加载一下窗体上事件。myEvent();//显示窗体;f.setVisible(true);}private void myEvent(){f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});//让按钮具备退出程序的功能but.addActionListener(new ActionListener(){private int count = 1;public void actionPerformed(ActionEvent e){Button b = (Button)e.getSource();Frame f1 = (Frame)b.getParent();f1.add(new Button("button-"+count++));f1.validate();}});}public static void main(String[] args) {new FrameDemo();}}</span>
菜单继承体系:
菜单:
MenuBar(菜单栏),Menu(菜单),MenuItem(菜单条目)
先创建菜单条,再创建菜单,每一个菜单 中建立菜单项。
也可以菜单添加到菜单中,作为子菜单。
通过setMenuBar()方法,将菜单添加到Frame中。
如以下例子:
<span style="font-size:12px;">import java.awt.*;import java.awt.event.*;class MyMenuDemo {private Frame f;private MenuBar mb;private Menu m,subMenu;private MenuItem closeItem,subItem;MyMenuDemo(){init();}public void init(){f = new Frame("my window");f.setBounds(300,100,500,600);f.setLayout(new FlowLayout());mb = new MenuBar();m = new Menu("文件");subMenu = new Menu("子菜单");subItem = new MenuItem("子条目");closeItem = new MenuItem("退出");subMenu.add(subItem);m.add(subMenu);m.add(closeItem);mb.add(m);f.setMenuBar(mb);myEvent();f.setVisible(true);}private void myEvent(){closeItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.exit(0);}});f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public static void main(String[] args) {new MyMenuDemo();}}</span>
- 黑马程序员————java基础之GUI
- 黑马程序员——JAVA基础之GUI
- 黑马程序员——Java基础之GUI
- 黑马程序员——java基础之GUI
- 黑马程序员——Java基础(十一)之GUI
- 黑马程序员—java基础之GUI与前期补充
- 黑马程序员—【Java基础篇】之GUI
- 黑马程序员——Java基础---GUI
- 黑马程序员——Java基础---GUI
- 黑马程序员——Java基础---GUI
- 黑马程序员——Java基础----GUI
- 黑马程序员——Java基础 GUI
- 黑马程序员——Java基础->GUI
- 黑马程序员——java基础----GUI
- 黑马程序员——java基础-GUI
- 黑马程序员——Java基础---GUI
- 黑马程序员——Java基础:GUI
- 黑马程序员——Java基础--GUI
- 05_重新打开已有工程(随手记)
- JavaScript 表单验证
- 在Magento页面左边增加分类菜单
- SAP Lumira连接数据库
- InnoDB存储引擎redo log文件——《MySQL技术内幕InnoDB存储引擎》读书笔记
- 黑马程序员————java基础之GUI
- 类集框架3
- Makefile快速入门
- 【门面设计模式】的故事来源(Facade Pattern)
- 移动端滑动加载更多
- [ACM]约瑟夫环
- 一些实用的终端命令
- 最大似然估计(MLE)和最大后验概率(MAP)
- semantic ui 下拉菜单支持全文搜索/添加列表项/更改事件