接口
接口的定义:关键字 interface
格式: public interface 接口名{ }
接口的属性定义:
格式: 【public static final】 属性类型 属性名 = 初始值;
【】中的关键字,写或者不写效果完全一样。
static:静态的,修饰的属性和方法可以通过类名/接口名直接访问。
final:不可改变,修饰属性,则属性必须初始化。
接口的方法定义:
格式: 【public abstract】 方法返回值类型 方法名(参数类型 参数名,……);
abstract:抽象的,修饰方法,则方法不能有方法体。
接口的对象:
接口是不能创建对象的。
需要接口类型的对象,可以创建一个类,实现接口:
关键字: implements
格式: public class 类名 implements 接口名{ }
注意: 普通类实现接口,需要重写接口所有的方法
接口的作用:
相当于规则。
事件监听机制
给事件源添加事件监听器,当事件源上发生相应类型的事件时,则自动的调用事件监听器中的事件处理方法。
事件:用外部设备操作组件。
鼠标事件:用鼠标操作组件(关注:鼠标操作的位置、类型)
键盘事件:用键盘操作组件
动作事件:用鼠标点击按钮(关注:按钮是否点击、点击的是哪一个按钮)
事件源:当前事件发生的组件。
事件监听器:每一种类型的事件,都有一个对应类型的事件监听器。
鼠标事件监听器: MouseListener
键盘事件监听器: KeyListener
动作事件监听器: ActionListener
事件监听的实现:
第一步:确定事件源
第二步:确定事件类型
第三步:创建一个类,实现对应类型的监听器接口
第四步:创建监听器的对象,给事件源添加监听器
练习:
1、完成登录校验
2、登陆失败,给出提示(JOptionPane)
3、登录成功,关闭当前界面,打开一个新界面
代码实现:
public class UItest{
public void UIshow(){
JFrame jf=new JFrame("登陆界面");
//流式布局
FlowLayout flowlayout=new FlowLayout();
jf.setLayout(flowlayout);
//设定界面初始大小
jf.setSize(300, 400);
//添加图片
ImageIcon icon=new ImageIcon("image/logo.png");
JLabel logo=new JLabel(icon);
jf.add(logo);
//添加用户名、密码标签
JLabel cid=new JLabel("用户名");
JLabel password=new JLabel("密 码");
JPasswordField passwordinput=new JPasswordField(20);
JTextField cidinput=new JTextField(20);
//添加勾选框
JCheckBox cidbox=new JCheckBox("记住用户");
JCheckBox pwbox=new JCheckBox("记住密码");
//添加用户名、密码标签和输入框到界面
jf.add(cid);
jf.add(cidinput);
jf.add(password);
jf.add(passwordinput);
//添加勾选框
jf.add(cidbox);
jf.add(pwbox);
//添加登陆按钮
JButton login=new JButton("登陆");
//把登陆按钮添加到界面上
jf.add(login);
//点击关闭时关闭程序
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建监听器
LoginListener loginL = new LoginListener();
//给按钮添加监听器
login.addActionListener(loginL);
loginL.cidinput = cidinput;
loginL.passwordinput = passwordinput;
loginL.jf=jf;
//显示界面
jf.setVisible(true);
}
public static void main(String[] args){
UItest ui=new UItest();
ui.UIshow();
}
}
public class LoginListener implements ActionListener{
JPasswordField passwordinput;
JTextField cidinput;
JFrame jf;
public void actionPerformed(ActionEvent e){
String text=cidinput.getText();
System.out.println("用户名:"+text);
char[] chars = passwordinput.getPassword();
String password = new String(chars);
System.out.println("密 码:"+password);
if(text.equals("1")&&password.equals("1")){
MainFrame mf= new MainFrame();
mf.MN();
jf.dispose();
}
else{
JOptionPane.showMessageDialog(null, "登陆失败");
}
}
}
public class MainFrame {
public void MN(){
JFrame JF=new JFrame("登陆成功");
FlowLayout flowlayout=new FlowLayout();
JF.setLayout(flowlayout);
//设定界面初始大小
JF.setSize(300, 400);
JLabel XXX=new JLabel("登陆成功");
JF.add(XXX);
JF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JF.setVisible(true);
}
}