时的默认操作是将当前窗口隐藏
我们要设置默认的关闭方式,禁止它这样做。我们设置的默认
关闭方式是:什么也不干。
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