目标:
1.掌握接口和抽象类的格式
2.熟练使用事件机制
1.接口的定义与实现
定义接口的关键字是:interface
格式:
public interface 接口名 extends 接口名,... {
//可以定义常量
public static final 数据类型 常量名 = 值;
//定义抽象方法
public 返回值数据类型 方法名(数据类型 参数名,...);
}
注意:
1.接口中默认的访问修饰符就是public。
2.接口中常量名的每一个字母都必须要大写。(常量直接通过接口名进行调用:接口名.常量名)
3.接口可以继承接口,而且可以同时继承多个接口
4.接口是不能实例化对象的。
实现接口的关键字是:implements
格式:
public class 类名 extends 类或者抽象类 implements 接口名,... {
//类必须要实现(重写)接口中所有的抽下方法
}
类实现接口后有没有特殊的地方呢?
1.接口也是一种类,只是比较特殊
2.类实现(继承)接口后,那么类必须要实现接口中所有的抽象方法。
3.类继承接口后,拥有类继承类的所有特性。
2.抽象类的定义与继承
定义抽象类的关键字:abstract class
格式:
public abstract class 抽象类名 extends 类或者抽象类 implements 接口名,... {
//类中可以定义的内容,抽象类都可以定义
//接口中能定义的内容,抽象类还是可以定义。
public abstract 返回值数据类型 方法名(数据类型 参数名,...);
}
3.接口和类的区别
4.事件机制
1.事件源
你的动作发生在哪一个组件上,那么该组件就是事件源。
只有图形界面类才可以成为事件源对象。
jbuLogin
2.事件监听器方法
监听是否有相应的动作发生,如果发生相应的动作,事件监听器方法
就会被激活,然后调用事件处理类的对象。
事件源对象.add**Listener(**Listener l);
jbuLogin.addActionListener(ActionListener al);
3.事件处理类
最终要执行什么样的内容
自定义的类,去实现对应的事件接口
LoginListener implements ActionListener {
//实现接口的抽象方法
}
5.练习
1.实现QQ登录界面的登录功能
package lxf0630; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; //定义一个QQLogin类 public class QQLogin { // 定义程序的入口主函数 public static void main(String[] args) { QQLogin qq = new QQLogin(); qq.initGUI(); } // 定义一个初始化界面的方法 public void initGUI(){ //1.实例化一个JFrame类的对象 JFrame jf = new JFrame(); //2.设置jf对象的属性值 jf.setTitle("QQ登录界面"); jf.setSize(new Dimension(380,295)); jf.setDefaultCloseOperation(3); jf.setLocationRelativeTo(null);//设置窗体显示在屏幕的中央 jf.setResizable(false);//设置禁止调整窗体的大小 //设置窗体的布局方式为边框布局,窗体默认的布局方式就是边框布局 //jf.setLayout(new BorderLayout()); /******************窗体背景*********************/ //实例化一个图标对象 ImageIcon backgroundImage = new ImageIcon("Images/dxy.jpg"); //实例化一个标签对象,让标签显示图标对象 JLabel backgroundJla = new JLabel(backgroundImage); //设置标签的起始位置和标签的大小 backgroundJla.setBounds(0, 0, backgroundImage.getIconWidth(), backgroundImage.getIconHeight()); //添加到窗体的LayeredPanel面板的最底层(第二层面板) jf.getLayeredPane().add(backgroundJla,new Integer(Integer.MIN_VALUE)); //获取窗体的第一层面板 JPanel contentPanel = (JPanel)jf.getContentPane(); //设置第一层面板为透明 contentPanel.setOpaque(false); /************************************************/ /****************北边的面板*********************/ JPanel northPanel = new JPanel(); northPanel.setOpaque(false);//设置面板为透明 northPanel.setPreferredSize(new Dimension(0,120)); //设置面板的布局方式为边框布局,JPanel默认的布局方式是流式布局 northPanel.setLayout(new BorderLayout()); //实例化一个JLabel的对象,并且让标签上显示图标 JLabel jla = new JLabel(""); //jla.setFont(new Font("楷体",Font.BOLD,36)); //将jla对象添加到northPanel对象上 northPanel.add(jla,BorderLayout.WEST); //将northPanel添加到jf窗体的北边 jf.add(northPanel,BorderLayout.NORTH); /**********************************************/ /****************西边的面板*********************/ JPanel westPanel = new JPanel(); westPanel.setOpaque(false);//设置面板为透明 //设置面板的布局方式为流式布局,JPanel默认的布局方式是流式布局 westPanel.setLayout(new FlowLayout()); //实例化一个图标(ImageIcon)对象 ImageIcon image = new ImageIcon("Images/QQ图片.jpg"); //实例化一个JLabel的对象,并且让标签上显示图标 JLabel jlaImage = new JLabel(image); //将jlaImage对象添加到westPanel对象上 westPanel.add(jlaImage); //将westPanel添加到jf窗体的西边 jf.add(westPanel,BorderLayout.WEST); /**********************************************/ /****************中间的面板*********************/ JPanel centerPanel = new JPanel(); centerPanel.setOpaque(false);//设置面板为透明 //设置面板的布局方式为流式布局,靠左侧显示组件,JPanel默认的布局方式是流式布局 centerPanel.setLayout(new FlowLayout(FlowLayout.LEFT,8,5)); //实例化组件类的对象 JComboBox jco = new JComboBox(); //设置组件的大小 jco.setPreferredSize(new Dimension(190,25)); //设置jco对象可以编辑 jco.setEditable(true); jco.addItem("185002513"); jco.addItem("24589663"); jco.addItem("921546465"); jco.setEditable(true); //将jco对象添加到centerPanel对象上 centerPanel.add(jco); //String st2=jco.getToolTipText(); JLabel jbuReg = new JLabel("注册账号"); centerPanel.add(jbuReg); //JTextField jt=new JTextField(st2); String s=(String)jco.getSelectedItem(); System.out.println(s); JPasswordField jpa = new JPasswordField(); //设置组件的大小 jpa.setPreferredSize(new Dimension(190,25)); //将jpa对象添加到centerPanel对象上 centerPanel.add(jpa); JLabel jbuPwd = new JLabel("找回密码"); centerPanel.add(jbuPwd); JCheckBox jch1 = new JCheckBox("记住密码"); jch1.setOpaque(false); JCheckBox jch2 = new JCheckBox("自动登录"); jch2.setOpaque(false); centerPanel.add(jch1); centerPanel.add(jch2); //将centerPanel添加到jf窗体的中间 jf.add(centerPanel,BorderLayout.CENTER); /**********************************************/ /****************南边的面板*********************/ JPanel southPanel = new JPanel(); southPanel.setOpaque(false);//设置面板为透明 //设置面板的布局方式为流式布局,JPanel默认的布局方式是流式布局 southPanel.setLayout(new FlowLayout()); //实例化一个LoginLestener类的对象 LoginListener l=new LoginListener(jpa,jco); JButton jbuLogin = new JButton("登 录"); jbuLogin.setPreferredSize(new Dimension(155,30)); //jbuLogin.setFont(new Font("楷体",Font.BOLD,36)); //给事件源对象添加动作监听器方法,绑定事件处理类的对象 jbuLogin.addActionListener(l); //将jbuLogin对象添加到southPanel对象上 southPanel.add(jbuLogin); //将southPanel添加到jf窗体的南边 jf.add(southPanel,BorderLayout.SOUTH); /**********************************************/ //设置窗体为可见的代码一定要放置在最后一行 jf.setVisible(true); } }
package lxf0630; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; //定义一个事件处理类,该类实现了ActionListener接口 public class LoginListener implements ActionListener{ private JPasswordField jpa; private JComboBox jco; //定义一个构造方法将JPasswordField jpa和JComboBox jco传到事件处理类中 public LoginListener(JPasswordField jpa,JComboBox jco) { this.jpa = jpa; this.jco = jco; } //重写接口中的抽象方法 public void actionPerformed(ActionEvent e) { System.out.println("你点击了"+e.getActionCommand()+"按钮"); //System.out.println(jpa.getText()); String str = e.getActionCommand(); //获取账号和密码 //String name=jpa.getText(); String act = (String) jco.getSelectedItem(); String pwd = jpa.getText(); if (act.equals("185002513")&&pwd.equals("123456")){ JFrame jf = new JFrame("欢迎使用QQ"); jf.setSize(600, 337); jf.setLocationRelativeTo(null);//设置窗体显示在屏幕的中央 jf.setResizable(false);//设置禁止调整窗体的大小 jf.setDefaultCloseOperation(3); jf.setVisible(true); //实例化一个JLabel的对象 ImageIcon imge1 = new ImageIcon("images/dxy2.jpg"); JLabel jla1 =new JLabel(imge1); jf.add(jla1); } else { JOptionPane.showMessageDialog(null, "你输入的账号错误,请重新输入!"); } } }
相关推荐
5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部...
5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...
5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...
5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...
5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...
5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...
5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部...
同时登录后还有分享到微信,qq,微博的功能,以及根据储存路径删除音乐文件和根据id删除mediastore的歌曲记录。登陆注册是一个自定义的alertdialog弹出框,写入sqlitedatabase进行验证判断。 通过这个音乐播放器的...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
局域网仿Q聊天工具主要包括如下功能模块: (1)用户登录: (2)用户个人聊天界面:界面美观、界面简捷、操作方便 (3)服务器管理: 1.3 约束条件 主要有如下的约束条件: 1、面向对象: 2、界面 界面简捷、操作...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...
五、QQ登陆: 留住买家、方便买家是平台增长的核心价值之一,QQ登录为平台注入新活力,降低会员流失的可能性,方便QQ用户直接登录。 六、广告管理: 广告是互联网赢利手段永恒不变的王者,商城系统增强了广告管理...