(强烈推荐)基于Java的在线考试系统设计与实现_毕业论文设计 下载本文

时的默认操作是将当前窗口隐藏

我们要设置默认的关闭方式,禁止它这样做。我们设置的默认

关闭方式是:什么也不干。

this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); **

* 为当前窗口添加窗口监听器,对窗口关闭事件作出响应] *

* WindowAdapter叫作适配器 * 这里引出了一个适配器模式:

* 当我们需要定义一个类(无论是不是使用匿名类方式)去

实现某个接口时,我们的需要是只对此接口中定义的某几个

* 抽象方法感兴趣,但是,因为接口的特点,我们的类必须

要将所有的方法都实现,无论我们是不是需要去书写这些方

* 法的方法逻辑。但是这样做在我们的类中就会有很多空方

法(方法中没有逻辑)。为了避免这样的情况发生。我们通常

* 会使用适配器模式。 *

* 适配器模式中,会有一个类实现了接口的所有方法,我们

称这个类叫适配器类。当我们在定义类的时候,就不需要直接

* 实现该接口,而是去继承适配器类,这样我们只需要重写

我们感兴趣的方法就可以了,无需将所有的方法都重写。

*

this.addWindowListener(new WindowAdapter(){

@Override

23

public void windowClosing(WindowEvent e) {

clientContext.exit(LoginFrame.this);不能直接写

this,直接写this指的是WindowEvent

}

创建主Panel

private JPanel createContentPane(){

JPanel panel = new JPanel(new BorderLayout()); 为panel加入边框 **

* North放一个label

* center放一个panel(两个label和两个输入框) * south放一个panel(两个按钮) *

JLabel label = new JLabel(\登录系统\将这步省略 panel.add(new JLabel(\登录系统\

}

});

BorderLayout.NORTH);

panel.add(createCenterPane(), BorderLayout.CENTER);

panel.add(createBtnPane(), BorderLayout.SOUTH); return panel;

24

}

private JPanel createCenterPane(){ }

此panel用于存放用户名和密码 private JPanel createIdPwdPane(){ 框)

* **

* 两行一列,每列存放一组内容(id 输入框),(密码 输入JPanel panel = new JPanel(new BorderLayout()); **

* north存放用户名密码的输入框panel *

panel.add(createIdPwdPane(),BorderLayout.NORTH); **

* center 存放用于显示错误信息的label *

message = new JLabel(\panel.add(message,BorderLayout.CENTER);

return panel;

直间距6

第一行

25

}

panel.add(createIdPane()); 第二行

panel.add(createPwdPane()); return panel;

private JPanel createIdPane(){

JPanel panel = new JPanel(new BorderLayout(6,0));水平

间距6,垂直间距0

}

private JPanel createPwdPane(){

JPanel panel = new JPanel(new BorderLayout(6,0));水平panel.add(new JLabel(\编号:\

idField = new JTextField();

panel.add(idField,BorderLayout.CENTER); return panel;

间距6,垂直间距0

panel.add(new JLabel(\密码:\

passwordField = new JPasswordField();

允许密码框输入法,应对linux的输入问题,linux也可以用 passwordField.enableInputMethods(true); panel.add(passwordField, BorderLayout.CENTER);

return panel;

26