basebox=Box.createHorizontalBox();
basebox.add(left);
basebox.add(Box.createHorizontalStrut(10));
basebox.add(right);
base=Box.createVerticalBox();
base.add(top);
base.add(Box.createVerticalStrut(10));
base.add(basebox);
base.add(Box.createVerticalStrut(10));
base.add(bottom);
frame.setLayout(new FlowLayout());
frame.add(base);
frame.setVisible(true);
}
} §空布局管理器(自定义布局): import javax.swing.*;
import java.awt.*;
public class NullLayoutDemo extends JFrame{
JPanel p;
JButton b1,b2,b3,b4;
public NullLayoutDemo(){
super("自定义布局演示");
setSize(250,150);
p=new JPanel();
p.setLayout(null);
getContentPane().add(p);
b1=new JButton("one");
b1.setBounds(10,20,100,30);//设置的依次是x、y坐标,长与宽
b2=new JButton("two");
b2.setBounds(120,20,100,30);
b3=new JButton("three");
b3.setBounds(10,70,100,30);
b4=new JButton("four");
b4.setBounds(120,70,100,30);
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
setVisible(true);
}
public static void main(String[] args) {
new NullLayoutDemo();
}
}11、事件处理
(2)事件处理的工作原理:
§事件源是一个能够注册监听器,且可为监听器发送事件对象的对象
§一个监听器对象是一个实现了专门的监听器接口的类实例
§当事件发生时,事件源将事件对象发送给事件源所注册的监听器(一个或多个)
§监听器对象使用事件对象的信息来确定做出的反应
(3)处理事件的一般步骤:
§定义要接收某事件的类并实现相应的监听器接口
§在事件源中注册类
§接收对应的事件对象,并通过监听器接口中的方法进行处理
(4)事件类型:AWT事件分为两大类,低级事件和高级事件,前者是基于组件和容器的事件,后者是基于语义的事件。
§低级事件:
ComponentEvent——组件事件,组件尺寸的变化和移动,是所有低层事件的基类。
ContainerEvent——容器事件,组件增加和删除。
WindowEvent——窗口事件,窗口被激活、关闭或者还原。
FucousEvent——焦点事件,组件获得焦点或者失去焦点。
KeyEvent——键盘事件,键盘的按下或释放。
MouseEvent——鼠标事件,鼠标键被按下、释放、鼠标移动或者托动。
MouseWheelEvent——鼠标滚轮被滚动。
§高级事件:
ActionEvent——动作事件,按钮单击、TextField中按下Enter键、菜单选择、选择列表框等。
AdjustmentEvent——调节事件,在滚动条上移动滑块和调节数值。
ItemEvent——选择列表框中的项目。
TextEvent——文本事件,文本对象发生改变。
(5)动作事件示例程序: import javax.swing.*;
import java.awt.event.*;
public class ActionEventDemo extends JFrame implements ActionListener{
//声明组件
JLabel lblTitle,lblUser,lblPass;
JTextField txtUser;
JPasswordField pwdPass;
JButton btnLogin,btnExit;
JPanel pnlMain;
//构造方法
public ActionEventDemo(){
super("用户登录");
pnlMain=new JPanel();
this.getContentPane().add(pnlMain);
//实例化组件
String address="G:\\00\\images\\";
lblTitle=new JLabel(new ImageIcon(address+"welcome.gif"));
lblUser=new JLabel("用户名:");
txtUser=new JTextField(12);
lblPass=new JLabel("密码:");
pwdPass=new JPasswordField(12);
//"登录"按钮
Icon imgLogin=new ImageIcon(address+"login.gif");
btnLogin=new