实现QQlogin界面点登陆,弹出新界面时,旧界面自动关闭
解题思路:
把JFrame传到监听器里面;
把jf.setVisible(false);/或者jf.dispose();把原窗口消掉;
遇到大问题:
1.传参的问题!!!!! 这个问题很严重啊!
这段可以忽略,纯粹心理历程(【这个问题困扰了我很久很久很久很久~ (我认为);
没想法的时候,向大神们请教,我按照他们说的去做,发现怎么做怎么错;
那天晚上没能解决到这个问题,到了另外一天到公司让大神看代码才发现自己犯了个很严重的错误~
我没有意识到的很严重的错误~ (这问题,没人教我真不懂~)
估计我是上传参课的时候太看小他了~导致犯这么大错。 太悲催了,太悲催了~
被问题困扰的感觉太难过了!】}
2.有思路,可是不知道怎么实现~
**问题的根源+解决方法:
1.【 //给事件源添加一个监听器方法,同时绑定事件处理类的对象ff
jb3.addActionListener(ff);
//给事件源添加一个监听器方法,同时绑定事件处理类的对象ll
jb3.addActionListener(ll); 】//错误代码
从这里我发现我还没能掌握到监听器的方法,只能给事件源添加一个监听器方法,绑定的对象只有一个!
因为用构造方法传参的时候,用一个构造器把全部参数都传进去啊!!我就分开了2个~ 必错无疑了~
我还以为是监听器的问题~ 当然,一开始是真的有问题~
一开始把QQlogin传进去了,现在想,应该没问题~ 只是自己不懂~
然后很疑惑的时候,就随便敲,随便敲,希望自己能中狗屎运~
后来发现,在这个严密的计算机语言中,乱搞是不行的,扎实的基础十分重要!
下层物质基础决定上层建筑嘛~ (不知道说错没有)
2.动手能力不足,跟计算机还混的不熟!
解决方法:还是得多敲,没有捷径~只有跟他混多了才能熟嘛~ 多敲!
问题还是有很多的~因为最近功课一直拉下了~ 有些问题都忘了~
一种占主导地位的感觉: 我不是一只小菜鸟,是一只大大大菜鸟~ aweful feeling!!!
现在很多问题还是自己解决不了,都要用别人的思路。
要学会独立解决问题啊! 不然一直都是菜鸟
附上代码:
/**********入口主函数************/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
//import javax.swing.JRootPane;
/**
* 创建一个简单的QQ登录界面
* @author Administrator
*
*/
public class QQlogin {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
QQlogin lo = new QQlogin();
lo.showFrame();
//讲登陆界面对象通过构造方法传入到ButtonAction类中
}
//声明一个全局的对象名
private ButtonAction ll = null ;
public JFrame jf;
//显示一个窗体界面的方法
public void showFrame(){
//设置一个窗体对象
jf = new JFrame();
//设置一个 标题
jf.setTitle("QQ登陆界面");
//设置大小
jf.setSize(380, 300);
//设置个起始位置,桌面中央
jf.setLocationRelativeTo(null);
//设置关闭
jf.setDefaultCloseOperation(2);
//设置能否改变窗体大小
jf.setResizable(false);
//设置窗体布局,边框布局
jf.setLayout(new BorderLayout());
/******窗体北边******/
JPanel jp1 = NorthPanel();
//把标签添加到窗体北边
jf.add(jp1,BorderLayout.NORTH);
/******窗体西边******/
JPanel jp2 = WestPanel();
//把标签添加到窗体北边
jf.add(jp2,BorderLayout.WEST);
/******窗体中间******/
JPanel jp3 = CenterPanel();
//把标签添加到窗体中间
jf.add(jp3,BorderLayout.CENTER);
/******窗体南边******/
JPanel jp4 = SouthPanel();
//把标签添加到窗体南边
jf.add(jp4,BorderLayout.SOUTH);
//设置背景,让面板透明
BackGroud(jf);
jp1.setOpaque(false);
jp2.setOpaque(false);
jp3.setOpaque(false);
jf.setVisible(true);
}
//**************设置背景****************************/
public void BackGroud(JFrame jf){
//实例化背景图片
ImageIcon img = new ImageIcon("images/4.jpg");//加载背景图片
JLabel image1 = new JLabel(img);
//添加图片至Frame的第二层
jf.getLayeredPane().add(image1, new Integer(Integer.MIN_VALUE));
//把标签的大小位置设置为图片刚好填充整个面
image1.setBounds(0,0,380, 300);
//image1.setBounds(0,0,img.getIconWidth(), img.getIconHeight());
//获取frame的最上层面板为了设置其背景颜色\ Container f4得到窗口放panel的一层
//设置第一层面板对象
Container f4=jf.getContentPane();
//设置透明,强制转型
((JComponent) f4).setOpaque(false);//
}
/*****************窗体北边*************************/
public JPanel NorthPanel(){
//panel们默认布局为流布局,居中。
JPanel jp1 = new JPanel();
jp1.setPreferredSize(new Dimension(380,130));
return jp1;
}
/*****************窗体西边*************************/
public JPanel WestPanel(){
//实例化一个面板
JPanel jp2 = new JPanel();
//设置面板布局
jp2.setLayout(new FlowLayout(FlowLayout.CENTER,15,5));
//实例化swing包下ImageIcon类对象
ImageIcon icon2 = new ImageIcon("images/2.jpg");
//实例化一个标签对象
JLabel label2 = new JLabel(icon2);
//把标签加到面板上
jp2.add(label2);
return jp2;
}
/*****************窗体中间*************************/
public JPanel CenterPanel(){
//实例化一个面板
JPanel jp3 = new JPanel();
//设置面板布局
jp3.setLayout(new FlowLayout(FlowLayout.LEFT,4,5));
//设置下拉框
JComboBox<String> combo = new JComboBox<String>();
//设置可编辑
combo.setEditable(true);
combo.setPreferredSize(new Dimension(175,22));
//添加到面板上
jp3.add(combo);
//添加“注册账号”按钮
JLabel jb1 = new JLabel("注册账号");
//jb1.setOpaque(false);
jp3.add(jb1);
//添加“输入密码”输入框
JPasswordField pass = new JPasswordField();
pass.setPreferredSize(new Dimension(175,22));
//添加到面板上
jp3.add(pass);
//添加“找回密码”按钮
JLabel jb2 = new JLabel("找回密码");
jp3.add(jb2);
//加入选择框
JCheckBox jc1 = new JCheckBox("记住密码");
jc1.setOpaque(false);
JCheckBox jc2 = new JCheckBox("自动登陆");
jc2.setOpaque(false);
jp3.add(jc1);
jp3.add(jc2);
//同时将账号和密码输入框对象通过构造方法传入到LoginListener类中
ll = new ButtonAction(combo,pass,jf);
return jp3;
}
/*****************窗体南边*************************/
public JPanel SouthPanel(){
//实例化一个面板
JPanel jp4 = new JPanel();
//设置面板布局
jp4.setLayout(new FlowLayout(FlowLayout.CENTER,1,13));
//实例化一个按钮对象
jp4.setBackground(new Color(203,139,95));
JButton jb3 = new JButton("登 录");
//ButtonAction ff = new ButtonAction(jf);
//给登陆按钮添加一个监听器
jp4.setPreferredSize(new Dimension(0,48));
jb3.setPreferredSize(new Dimension(140,30));
jp4.add(jb3);
//给事件源添加一个监听器方法,同时绑定事件处理类的对象ff
jb3.addActionListener(ll);
//给事件源添加一个监听器方法,同时绑定事件处理类的对象ll
// jb3.addActionListener(ll);
return jp4;
}
}
/***************定义登陆按钮监听器************************/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
//import javax.swing.JComponent;
public class ButtonAction implements ActionListener {
public JFrame jf;
private JComboBox combo;
private JPasswordField pass;
public QQlogin lo;
// public ButtonAction(JFrame jf){
// this.jf=jf;
// }
public ButtonAction(JComboBox combo,JPasswordField pass,JFrame jf){
this.combo = combo;
this.pass = pass;
this.jf=jf;
}
@Override
public void actionPerformed( ActionEvent e) {
System.out.println("你点击了"+e.getActionCommand()+"按钮");
//获取账号,密码信息
String name = (String)combo.getSelectedItem();
String passworld = new String(pass.getPassword());
//判断账号密码是否一致;
if(name.equals("912332548")&&passworld.equals("1234")){
//Window jf = null;
jf.dispose();
//实例化一个简单界面
JFrame jf1 = new JFrame();
jf1.setSize(300,500);
jf1.setTitle("扣扣扣鼻屎");
jf1.setResizable(true);
jf1.setDefaultCloseOperation(3);
jf1.setLocationRelativeTo(null);
jf1.dispose();
jf1.setVisible(true);
}
else{
//账号密码不一致
//弹出一个消息提醒窗口
JOptionPane.showMessageDialog(null, "你输入的账号和密码不符,请重新输入");
}
}
}
相关推荐
【仿QQ登陆界面设计详解】 在IT行业中,用户界面(UI)的设计至关重要,因为它直接影响到用户的体验和产品的吸引力。QQ作为中国最受欢迎的即时通讯软件之一,其登录界面早已深入人心。仿QQ登录界面的设计,旨在模仿...
3. **按钮事件响应**:登录按钮的点击事件需要编写代码来处理,这涉及到事件驱动编程的概念。学习者需要理解如何在按钮被点击时执行特定的函数或方法,例如验证用户输入的账号和密码。 4. **数据验证**:在实际的...
本知识点将详细介绍如何在PHP中实现QQ登录功能,以及如何利用给定的"php的qq登陆类"进行集成。 首先,我们需要理解QQ登录的原理。QQ开放平台为开发者提供了OAuth2.0授权机制,允许第三方应用通过获取用户的授权,...
QQ登陆器例程是一个关于计算机编程的实例,主要聚焦于使用易语言开发QQ登录功能的代码。易语言是一种中文编程语言,旨在降低编程难度,让更多人能够参与到编程中来。这个压缩包包含了一个QQ登陆器的源代码,是学习...
易语言QQ登陆框源码是一个基于易语言编程的项目,旨在模拟腾讯QQ的登录界面,为用户提供一个类似的体验。易语言是一种中文编程语言,它的设计目标是让编程变得更加简单、直观,尤其适合初学者和非专业程序员使用。...
通过阅读和分析源码,可以深入理解VB6的事件驱动编程模型、控件的使用、图形界面的设计原则以及如何实现特定的视觉效果,如渐变和下拉框功能。 【版本信息】:"高仿QQ2009 ver 1.0.0 测试版"表明这是基于2009年版QQ...
在QQ登陆和临时聊天的场景中,VB可能被用来编写控制界面交互的代码,比如按钮点击事件处理、控件动态显示等。VB的易用性和强大的图形用户界面(GUI)构建能力使得开发者可以快速实现用户友好的交互设计。 临时聊天...
1. **窗口程序设计**:易语言提供了窗口程序设计模块,可以方便地创建和定制各种窗口,包括QQ登陆框的界面布局,如输入框、按钮等控件的添加和排列。 2. **事件驱动编程**:易语言采用事件驱动的方式,用户在界面上...
总之,"Swing做的高仿QQ登陆界面"项目是一个很好的Swing学习案例,它涵盖了GUI设计、事件处理、数据验证等多个核心知识点,对于初学者来说具有很高的实践价值。同时,此项目也鼓励进一步完善和扩展,例如添加网络...
首先,"winform高仿qq登陆界面"这个标题暗示了我们需要使用Microsoft的Windows Forms(WinForms)技术来构建一个与腾讯QQ登录界面类似的用户界面。WinForms是.NET Framework的一部分,用于开发桌面应用程序,提供了...
**VB编写的模拟QQ登陆程序** Visual Basic(VB)是一种基于事件驱动的编程...总之,VB编写的模拟QQ登陆程序是一个很好的教学示例,它结合了常见的控件使用、事件响应和简单的业务逻辑,为初学者提供了宝贵的实践经验。
进入QQ网站时要求登陆,但是网页能自动检测当前已登陆QQ,这是怎么实现的呢? 其实很简单,QQ利用了COM组件完成了快速登陆功能,此功能也同时利用在了很多地方。例如点击QQ客户端上面的空间按钮、邮箱按钮、会员首页...
综上所述,创建一个高仿QQ2013登录界面涉及到了C#的Windows Forms编程基础,包括控件的使用、事件处理、界面设计以及代码的组织和调试。虽然描述中提到的项目可能并未实现完整的功能,但通过这个过程,开发者可以...
总之,"WPF高仿QQ登陆界面"是一个实践WPF技术的好案例,涵盖了UI设计、布局管理、事件处理、动画效果等多个方面。通过分析和学习这个项目,开发者能够深入理解WPF的强大功能,并提升自己的UI设计和编程能力。
在这样的背景下,第三方开发者推出了名为“QQ登陆器2009免费版”的辅助工具,目的是为了解决用户登录时遇到的诸多不便,尤其是对于那些需要管理多个QQ账号的用户而言,无疑提供了一种全新的便捷体验。 “QQ登陆器...
8. **事件驱动编程**:DELPHI采用事件驱动模型,用户操作如点击按钮会触发相应的事件处理函数,编写这些事件处理器是程序的核心部分。 9. **版本控制与发布**:在开发过程中,版本控制工具如Git用于协同开发和版本...
【模拟QQ登陆程序代码解析】 在编程领域,模拟QQ登陆程序是一种常见的练习,它涉及到网络通信、身份验证、用户界面设计等多个方面的知识。本项目基于MFC(Microsoft Foundation Classes)库实现,MFC是微软提供的一...
【标题】"仿QQ登陆界面 java.swing"指的是使用Java的Swing库创建的一个模仿QQ登录界面的项目。Swing是Java提供的一种用于构建图形用户界面(GUI)的工具包,它提供了丰富的组件和功能,使得开发者能够方便地设计出...
"仿QQ登陆界面源代码"是一份旨在帮助编程爱好者和初学者理解并实现类似QQ登录界面的代码资源。通过这份源代码,我们可以学习到UI设计的基本原则、前端开发技术以及如何运用这些技术来创建一个具有交互性的登录界面。...
QQ登陆模块5.7GBK版是一款专为网站设计的QQ登录功能组件,它允许用户通过自己的QQ账号快速登录到网站,极大地提升了用户体验和网站的互动性。这个版本针对GBK编码进行了优化,确保在中文环境下正常运行,避免了字符...