1104
布局管理器2
FlowLayout例子:
import
java.awt.*;
public
class TestFlowLayout2 {
public static void main(String args[]) {
Frame. f = new Frame("Java Frame");
FlowLayout l = new FlowLayout(FlowLayout.CENTER, 20,
40);//20为水平间距,40为垂直间距
f.setLayout(l);
f.setLocation(300,400);
f.setSize(300,200);
f.setBackground(new Color(204,204,255));
for(int i = 1; i<=7; i++){
f.add(new Button("BUTTON"));
}
f.setVisible(true);
}
}
BorderLayout布局管理器
BorderLayout是Frame类的默认布局管理器
BorderLayout将这个容器分为,东西南北中五个区域,组件只能添加到指定的区域,默认的是中(CENTER)。每个区域只能添加一个组件,若再次添加则会覆盖。
例子:
范例名称:BorderLayout应用举例
源文件名称:TestBorderLayout.java
要 点:FlowLayout布局管理器的性质及用法
import
java.awt.*;
public
class TestBorderLayout {
public static void main(String args[]) {
Frame. f;
f = new Frame("Border Layout");
Button bn = new Button("BN");
Button bs = new Button("BS");
Button bw = new Button("BW");
Button be = new Button("BE");
Button bc = new Button("BC");
f.add(bn, "North");
f.add(bs, "South");
f.add(bw, "West");
f.add(be, "East");
f.add(bc, "Center");
//也可使用下述语句,这种比较规范
f.setSize(200,200);
f.setVisible(true);
}
}
GridLayout布局管理器
GridLayout布局管理器将空间划分成规则的矩形网络,每个区域大小相等。排列顺序从左到右,从上至下
例子:
范例 名称:GridLayout应用举例
源文件名称:TestGridLayout
要 点:GridLayout布局管理器的性质及用法
import
java.awt.*;
public
class TestGridLayout {
public static void main(String args[]) {
Frame. f = new Frame("GridLayout Example");
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button
b6 = new Button("b6");
f.setLayout (new GridLayout(3,2));//指定了行列
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.pack(); //自动包住这些Button
f.setVisible(true);
}
}
1106
事件模型1
范例 名称:Java事件处理举例
源文件名称:TestActionEvent.java
要 点:
1.
Java事件处理机制
2.事件源、事件监听器概念及作用
3.如何在一个现有组件上注册监听器
import
java.awt.*;
import
java.awt.event.*;
public
class TestActionEvent {
public static void main(String args[]) {
Frame. f = new Frame("Test");
Button b = new Button("Press Me!");
Monitor bh = new Monitor();//新建一个监听器
b.addActionListener(bh);//监听器bh在Button这注册
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
class
Monitor implements ActionListener {//即Monitor要监听的是ActionListener类型的事件
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed");
}
}
要监听什么事,就得实现什么接口。所以事件有很多,接口也有很多,它们之间一一对应
当某件事情发生,事件源对象会调用实现了某种监听器接口的类的对象。所以实现了某种监听器接口的类的对象必须把自己注册到事件源对象,告知对方:我在监听
当某件事发生的时候,必须把此事封装成一个对象作为一个参数传递给监听器所实现接口里的特定方法
此例中当press
me被点击时,它发出的这一件事叫ActionEvent e
Button类的方法public void addActionListener(ActionListener l)添加指定的动作侦听器,以接收发自此按钮的动作事件。当用户在此按钮上按下或释放鼠标时,发生动作事件。
ActionEvent类指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如Button)生成此高级别事件。事件被传递给每一个ActionListener对象,这些对象是使用组件的addActionListener方法注册的,用以接收这类事件。