java基础知识12-javaUI1
2013-12-23 09:55
513 查看
1:java GUI框架类型
一种是比较老的AWT框架,一种是新的Swing框架。awt(Abstract window toolkit)的消息机制是基于分层处理的,事件沿着层次结构沿着容器的上方传递。自从java1.1开始,java开始采用新的事件处理模型,采用委托事件模型。
2:委托事件处理
事件源与事件处理程序分开,其实就是建立一种事件源,监听器的模式,事件源就是产生消息的源头,指的是Button,Checkbox ,CheckboxGroup,Choice,List,TextArea,TextField,Menu等各种各样的空间。
监听器就是各种各样的接口,程序要处理相应的时间就必须实现这些接口。
事件处理的逻辑步骤,(1)事件源添加监听器(2)实现监听器的接口。
3:事件类型,监听器相关接口
事件 监听器
ActionEvent ActionListener
AdjustmentEvent AdjustmentListener
ComponentEvent ComponentListener
Containe rEvent ContainerListener
FocusEvent FocusListener
KeyEvent KeyListener
MouseEvent MouseListener
WindowEvent WindowListener
ItemEvent ItemListener
TextEvent TextListener
事件添加以及删除函数,形式都如下所示:
addActionListener( ) //添加监听器
removeActionListener( ) //删除监听器
每个事件监听器都有一个或者几个接口,当implements interface时必须实现所有的的监听器的接口函数,即便函数什么也不做,为了减少这种写空函数的麻烦,java为监听器中函数多于一个提供了一个适配器,适配器里面有默认的函数,需要的时候仅仅重写需要重写的函数即可,如下所示:
4:applet
applet是可以在HTML网页中运行的程序,它在运行的时候会有安全限制,它可以不需要main函数,一个典型的applet程序如下所示:
所有public类必须继承Applet类,Applet中主要的方法有 init(),start(),paint(),stop(),destroy(),
init 在程序片被创建时候调用;start在程序片进入web浏览器后调用,是在Init之后;stop是在程序片离开浏览器中的视野时关闭响应操作;destroy是在程序片不再被需要时销毁程序片。
5:常用组件类型
(1)Button 按键
public Button();public Button(String label);
(2)TextFiled 输入框
TextField();TextField(int columns);TextField(String text);TextField(String text, int columns)
(3)TextArea 文本输入区域
TextArea();TextArea(int rows,int columns);TextArea(String text);
TextArea(String text,int rows,int columns);TextArea(String text,int rows,int columns,int scrollbars);
(4)Lable 标签
Label();Label(String text);Label(String text,int alignment)
(5)Checkbox 复选框
Checkbox();Checkbox(String label);Checkbox(String label, boolean state);
Checkbox(String label, boolean state, CheckboxGroup group);
Checkbox(String label, CheckboxGroup group, boolean state);
(6)CheckboxGroup 单选按钮
CheckboxGroup()
它把Checkbox 放在一起,如下所示:
CheckboxGroup cbg = new CheckboxGroup();
add(new Checkbox("one", cbg, true));
add(new Checkbox("two", cbg, false));
add(new Checkbox("three", cbg, false));
(7)Choice 下拉列表
Choice();
点击会会出现一个下拉列表,可以向其中添加Item,如下程序所示:
Choice ColorChooser = new Choice();
ColorChooser.add("Green");
ColorChooser.add("Red");
ColorChooser.add("Blue");
(8)List 列表框
List();List(int rows);List(int rows,boolean multipleMode);//是否允许多个选择,默认是单选的
6:古老的事件处理
applet中 的消息处理函数基本都是继承自 Class Component,
public boolean action(Event evt,Object what);
handleEvent();
例子如下,因为他们不是不是面向对象的,也没有switch-case语句,所以就必须调用复杂的if-else语句,并且还得返回父类的程序,例子如下:
handleEvent 是单独处理一个对象的一个时间,当一些action不方便处理的事情就可以通过handleEvent来处理,因为它是原子性质的。下面的两段代码将是等价的:
*************************************************************************
并且必须强调的是handle中的最后一个必须返回super.handle(evt);因为必须把handle中不想处理的事情交给父类,要不然例子中的action将不会被执行。
7:布局
java中的布局有多个,我们可以采取各种各样的布局,是界面呈现自己想要的姿态
(1)FlowLayout:
按照顺序依次排放各个组件
(2)BorderLayout
将整个布局分为上下左右中五个部位
(3)GridLayout
将整个布局分为m×n块均匀大小
(4)CardLayout
一个平面上所有的组件重合,但是某一个时刻只有一个是被及激活的。通过下面这样的方式来改变激活重合的组件。
8:程序片applet的限制
applet出于安全机制考虑,它不能访问本地磁盘,不能拥有菜单,对话框不被信任;
9:新的事件委托事件函数
新的事件处理机制采用事件源和监听器的模式,程序如下所示:
通过设置内部类来实现UI和事件处理相互分离的作用
10:applet 和 窗口程序的结合
通过在类中添加一个main函数就可以将程序变成一个既能在HTML中运行的程序片,又能在桌面中运行的程序片。
一种是比较老的AWT框架,一种是新的Swing框架。awt(Abstract window toolkit)的消息机制是基于分层处理的,事件沿着层次结构沿着容器的上方传递。自从java1.1开始,java开始采用新的事件处理模型,采用委托事件模型。
2:委托事件处理
事件源与事件处理程序分开,其实就是建立一种事件源,监听器的模式,事件源就是产生消息的源头,指的是Button,Checkbox ,CheckboxGroup,Choice,List,TextArea,TextField,Menu等各种各样的空间。
监听器就是各种各样的接口,程序要处理相应的时间就必须实现这些接口。
事件处理的逻辑步骤,(1)事件源添加监听器(2)实现监听器的接口。
3:事件类型,监听器相关接口
事件 监听器
ActionEvent ActionListener
AdjustmentEvent AdjustmentListener
ComponentEvent ComponentListener
Containe rEvent ContainerListener
FocusEvent FocusListener
KeyEvent KeyListener
MouseEvent MouseListener
WindowEvent WindowListener
ItemEvent ItemListener
TextEvent TextListener
事件添加以及删除函数,形式都如下所示:
addActionListener( ) //添加监听器
removeActionListener( ) //删除监听器
每个事件监听器都有一个或者几个接口,当implements interface时必须实现所有的的监听器的接口函数,即便函数什么也不做,为了减少这种写空函数的麻烦,java为监听器中函数多于一个提供了一个适配器,适配器里面有默认的函数,需要的时候仅仅重写需要重写的函数即可,如下所示:
class MyWindowListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } }
4:applet
applet是可以在HTML网页中运行的程序,它在运行的时候会有安全限制,它可以不需要main函数,一个典型的applet程序如下所示:
import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { g.drawString("First applet", 10, 10); } }
所有public类必须继承Applet类,Applet中主要的方法有 init(),start(),paint(),stop(),destroy(),
init 在程序片被创建时候调用;start在程序片进入web浏览器后调用,是在Init之后;stop是在程序片离开浏览器中的视野时关闭响应操作;destroy是在程序片不再被需要时销毁程序片。
5:常用组件类型
(1)Button 按键
public Button();public Button(String label);
(2)TextFiled 输入框
TextField();TextField(int columns);TextField(String text);TextField(String text, int columns)
(3)TextArea 文本输入区域
TextArea();TextArea(int rows,int columns);TextArea(String text);
TextArea(String text,int rows,int columns);TextArea(String text,int rows,int columns,int scrollbars);
(4)Lable 标签
Label();Label(String text);Label(String text,int alignment)
(5)Checkbox 复选框
Checkbox();Checkbox(String label);Checkbox(String label, boolean state);
Checkbox(String label, boolean state, CheckboxGroup group);
Checkbox(String label, CheckboxGroup group, boolean state);
(6)CheckboxGroup 单选按钮
CheckboxGroup()
它把Checkbox 放在一起,如下所示:
CheckboxGroup cbg = new CheckboxGroup();
add(new Checkbox("one", cbg, true));
add(new Checkbox("two", cbg, false));
add(new Checkbox("three", cbg, false));
(7)Choice 下拉列表
Choice();
点击会会出现一个下拉列表,可以向其中添加Item,如下程序所示:
Choice ColorChooser = new Choice();
ColorChooser.add("Green");
ColorChooser.add("Red");
ColorChooser.add("Blue");
(8)List 列表框
List();List(int rows);List(int rows,boolean multipleMode);//是否允许多个选择,默认是单选的
6:古老的事件处理
applet中 的消息处理函数基本都是继承自 Class Component,
public boolean action(Event evt,Object what);
handleEvent();
例子如下,因为他们不是不是面向对象的,也没有switch-case语句,所以就必须调用复杂的if-else语句,并且还得返回父类的程序,例子如下:
public boolean action (Event evt, Object arg) { if(arg.equals("Button 1")) getAppletContext().showStatus("Button 1"); else if(arg.equals("Button 2")) getAppletContext().showStatus("Button 2"); // Let the base class handle it: else return super.action(evt, arg); return true; // We've handled it here }
handleEvent 是单独处理一个对象的一个时间,当一些action不方便处理的事情就可以通过handleEvent来处理,因为它是原子性质的。下面的两段代码将是等价的:
public boolean action (Event evt, Object arg) { if(evt.target.equals(lst)) { t.setText(""); String[] items = lst.getSelectedItems(); for(int i = 0; i < items.length; i++) t.appendText(items[i] + "\n"); } else if(evt.target.equals(b)) { if(count < flavors.length) lst.addItem(flavors[count++], 0); } else return super.action(evt, arg); return true; } }
*************************************************************************
public boolean handleEvent(Event evt) { if(evt.id == Event.LIST_SELECT || evt.id == Event.LIST_DESELECT) { if(evt.target.equals(lst)) { t.setText(""); String[] items = lst.getSelectedItems(); for(int i = 0; i < items.length; i++) t.appendText(items[i] +"\n"); } else return super.handleEvent(evt); } else // must return super.handleEvent(evt); return super.handleEvent(evt); return true; } public boolean action(Event evt, Object arg) { if(evt.target.equals(b)) { if(count < flavors.length) lst.addItem(flavors[count++], 0); } else return super.action(evt, arg); return true; }
并且必须强调的是handle中的最后一个必须返回super.handle(evt);因为必须把handle中不想处理的事情交给父类,要不然例子中的action将不会被执行。
7:布局
java中的布局有多个,我们可以采取各种各样的布局,是界面呈现自己想要的姿态
(1)FlowLayout:
按照顺序依次排放各个组件
(2)BorderLayout
将整个布局分为上下左右中五个部位
(3)GridLayout
将整个布局分为m×n块均匀大小
(4)CardLayout
一个平面上所有的组件重合,但是某一个时刻只有一个是被及激活的。通过下面这样的方式来改变激活重合的组件。
if (evt.target.equals(first)) { cl.first(cards); } else if (evt.target.equals(second)) { cl.first(cards); cl.next(cards); } else if (evt.target.equals(third)) { cl.last(cards); }
8:程序片applet的限制
applet出于安全机制考虑,它不能访问本地磁盘,不能拥有菜单,对话框不被信任;
9:新的事件委托事件函数
新的事件处理机制采用事件源和监听器的模式,程序如下所示:
class B1 implements ActionListener { public void actionPerformed(ActionEvent e) { t.setText("Button 1"); } }
通过设置内部类来实现UI和事件处理相互分离的作用
10:applet 和 窗口程序的结合
通过在类中添加一个main函数就可以将程序变成一个既能在HTML中运行的程序片,又能在桌面中运行的程序片。
public static void main(String[] args) { TextNew applet = new TextNew(); Frame aFrame = new Frame("TextNew"); aFrame.addWindowListener( new Win dowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); aFrame.add(applet, BorderLayout.CENTER); aFrame.setSize(300,200); applet.init(); applet.start(); aFrame.setVisible(true); }
相关文章推荐
- JAVA 基础知识学习12
- Java基础知识强化之网络编程笔记12:TCP之TCP协议上传文本文件并给出反馈
- Java基础知识强化之集合框架笔记12:Collection集合存储字符串并遍历
- Java语言的基础知识12
- Java基础知识_毕向东_Java基础视频教程笔记(11-12 多线程)
- JAVA相关基础知识总结(连载)-12
- Java基础知识强化12:Java中运用数组的四种排序方法
- Java基础知识强化之IO流笔记12:递归之递归解决问题的思想(图解)
- JAVA基础知识(12)-----同步
- java基础知识13-javaUI2
- 【Java学习笔记】基础知识学习12【Set接口的实现类】
- Java基础知识12
- UINavigationController - iOS - UI基础知识总结12
- Java基础知识_毕向东_Java基础视频教程笔记(11-12)
- Java基础知识笔记
- Java基础知识强化之IO流笔记04:throw和throws的区别
- Java基础知识汇总
- Java基础知识-2、数据类型和变量
- 学习Spring必学的Java基础知识(转)
- Java基础知识总结(绝对经典)