事件机制(实现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,"你输入的账号错误,请重新输入!");}}}?
?