8.1 了解GUI
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机
操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
8.1.1 Awt和Swing
AWT(Abstract Window Toolkit),抽象窗口工具包,SUN公司提供的用于图形界面编程(GUI)的类库。基本的AWT
库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台上(Windows、Unix、Macintosh等)的
本地GUI工具进行处理。例如:如果我们使用AWT在一个Java窗口中放置一个按钮,那么实际上使用的是一个具有
本地外观和感觉的按钮。这样,从理论上来说,我们所编写的图形界面程序能运行在任何平台上,做到了图形界面程
序的跨平台运行。
AWT 中的布局管理器
1) 容器里组件的位置和大小是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用。当容器需要定位
一个组件时,它将调用布局管理器来完成。当决定一个组件的大小时,也是如此。
2) 在AWT中,给我们提供了五种布局管理器:
FlowLayout(流式布局管理器)
?从左到右的顺序排列。
?Panel默认的布局管理器。
BorderLayout(边界布局管理器)
?东,南,西,北,中
?Frame默认的布局管理器。
GridLayout(网格布局管理器)
?规则的矩阵
CardLayout(卡片布局管理器)
?选项卡
?GridBagLayout(网格包布局管理器)
?非规则的矩阵
[java] view plaincopy
package window;
import java.awt.FlowLayout;
import java.awt.Frame;
public class Frame01 {
/**
* @param args
*/
public static void main(String[] args) {
Frame f = new Frame("my frame");//创建窗体
f.setLayout(new FlowLayout());//设置布局方式
f.setSize(354, 400);//设置窗体大小
f.setLocation(300,300);//设置窗体出现的位置
f.setVisible(true);//设置可见性
f.setTitle("bushijie");//设置标题
}
}
AWT事件模型
1) Events(事件):描述发生了什么的对象。
2) Event source(事件源):事件的产生器。
3) Event handlers(事件处理器):接收事件对象、解释事件对象并处理用户交互的方法。
事件监听器 实现了监听器接口的类。一个监听器对象是一个实现了专门的监听器接口的类的实例。 如增加
窗口监听,实现按关闭按钮时退出,WindowAdapter为一个空实现了WindowListener接口的抽象类,故其不
能直接用new来创建对象,可以通过匿名类来实现,在中间重写windowClosing方法:
示例,点击关闭Button关闭窗体(给button注册了监听器,实现关闭功能)
[java] view plaincopy
package window;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo
{
//定义该图形中所需的组件的引用
private Frame f;
private Button bt;
//方法
FrameDemo()//构造方法
{
madeFrame();
}
public void madeFrame()
{
f = new Frame("My Frame");
//对Frame进行基本设置。
f.setBounds(300,100,600,500);//对框架的位置和大小进行设置
f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//设计布局
bt = new Button("关闭窗体");
//将组件添加到Frame中
f.add(bt);
//加载一下窗体上的事件
myEvent();
//显示窗体
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()//窗口监听
{
public void windowClosing(WindowEvent e)
{
System.out.println("窗体执行关闭!");
System.exit(0);
}
});
//让按钮具备关闭窗口的功能
bt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("按钮执行关闭窗口的功能");
System.exit(0);
}
});
}
public static void main(String[] agrs)
{
new FrameDemo();
}
}
一个下拉菜单的例子
[java] view plaincopy
package window;
/*
* 图形用户界面的实现
*
* 下拉菜单的设置实例
*
*/
import java.awt.*;
import java.awt.event.*;
public class TestMenuBar {
MenuBar mb = new MenuBar();
Menu filem = new Menu("文件");
Menu editm = new Menu("编辑");
Menu geshim = new Menu("格式");
Menu chakanm = new Menu("查看");
Menu helpm = new Menu("帮助");
MenuItem filem1 = new MenuItem("新建");
MenuItem filem2 = new MenuItem("打开");
MenuItem filem3 = new MenuItem("保存");
MenuItem filem4 = new MenuItem("另存为");
MenuItem filem5 = new MenuItem("页面设置");
MenuItem filem6 = new MenuItem("打印");
MenuItem editm1 = new MenuItem("撤消");
MenuItem editm2 = new MenuItem("剪切");
MenuItem editm3 = new MenuItem("复制");
MenuItem editm4 = new MenuItem("粘贴");
MenuItem editm5 = new MenuItem("删除");
MenuItem editm6 = new MenuItem("查找");
MenuItem editm7 = new MenuItem("查找下一个");
MenuItem editm8 = new MenuItem("替换");
MenuItem editm9 = new MenuItem("转到");
MenuItem editm10 = new MenuItem("全选");
MenuItem editm11 = new MenuItem("时间/日期");
MenuItem geshim2 = new MenuItem("字体");
CheckboxMenuItem geshim1 = new CheckboxMenuItem("自动换行", true);
CheckboxMenuItem ch = new CheckboxMenuItem("退出", true);
MenuItem chakanm1 = new MenuItem("状态栏");
MenuItem helpm1 = new MenuItem("帮助主题");
MenuItem helpm2 = new MenuItem("关于记事本");
TestMenuBar() {
Frame f = new Frame("简单的菜单");
f.setLayout(new FlowLayout());
mb.add(filem);
mb.add(editm);
mb.add(geshim);
mb.add(chakanm);
mb.add(helpm);
filem.add(filem1);
filem.add(filem2);
filem.add(filem3);
filem.add(filem4);
filem.addSeparator();
filem.add(filem5);
filem.add(filem6);
filem.addSeparator();
filem.add(ch);
editm.add(editm1);
editm.addSeparator();
editm.add(editm2);
editm.add(editm3);
editm.add(editm4);
editm.add(editm5);
editm.addSeparator();
editm.add(editm6);
editm.add(editm7);
editm.add(editm8);
editm.add(editm9);
editm.addSeparator();
editm.add(editm10);
editm.add(editm11);
geshim.add(geshim1);
geshim.add(geshim2);
chakanm.add(chakanm1);
helpm.add(helpm1);
helpm.addSeparator();
helpm.add(helpm2);
f.setMenuBar(mb);
f.setSize(300, 100);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new TestMenuBar();
}
阅读(982) | 评论(0) | 转发(0) |