Java qq登陆界面

合集下载

java用户登录界面的代码

java用户登录界面的代码

java用户登录界面的代码以下是一个简单的Java用户登录界面的代码示例,其中包括了GUI界面设计和用户验证的代码:```javaimport javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JPasswordField;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class LoginWindow extends JFrame implements ActionListener {private JLabel usernameLabel, passwordLabel;private JTextField usernameTextField;private JPasswordField passwordField;private JButton loginButton;public LoginWindow() {setTitle("用户登录");setSize(400, 200);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);usernameLabel = new JLabel("用户名:");passwordLabel = new JLabel("密码:");usernameTextField = new JTextField();passwordField = new JPasswordField();loginButton = new JButton("登录");loginButton.addActionListener(this);setLayout(null);usernameLabel.setBounds(50, 30, 80, 25);passwordLabel.setBounds(50, 70, 80, 25);usernameTextField.setBounds(130, 30, 200, 25);passwordField.setBounds(130, 70, 200, 25);loginButton.setBounds(150, 120, 100, 25);add(usernameLabel);add(passwordLabel);add(usernameTextField);add(passwordField);add(loginButton);setVisible(true);}public void actionPerformed(ActionEvent e) {String username = usernameTextField.getText();String password = newString(passwordField.getPassword());if (isValidUser(username, password)) {System.out.println("用户登录成功!");// 在这里可以跳转到下一个界面} else {System.out.println("用户名或密码错误!");}}private boolean isValidUser(String username, String password) {// 在这里实现用户验证的代码// 比如查询数据库是否有该用户并且密码是否匹配等等// 如果验证成功则返回true,否则返回falsereturn false;}public static void main(String[] args) {new LoginWindow();}}```该代码创建了一个窗口界面,包括“用户名”和“密码”两个文本框,以及一个“登录”按钮。

qq登录界面设计java程序

qq登录界面设计java程序
zhanghao.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.WHITE));
zhanghao.setFont(new Font("宋体",Font.PLAIN,13));
this.add(zhanghao);*/
// zhanghaowb = new JLabel(new ImageIcon("2.png"));
zidongdenglu = new JCheckBox("自动登录");
zidongdenglu.setBounds(200, 190, 100, 30);
this.add(zidongdenglu);
jizhumima = new JCheckBox("记住密码");
jizhumima.setBounds(100, 190, 100, 30);
} catch (InstantiationException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
QQLogin w = new QQLogin();
w.setVisible(true);
}
});*/
new QQLogin();
}
public void mouseClicked(MouseEvent e) {
// TODO 自动生成方法存根

Java实现QQ登陆

Java实现QQ登陆

Java实现QQ登陆图②:图③:好了,效果就是这样了,虽然实现了基本功能,但是还是不完美,比如说好友面板不能随着窗口改变大小而改变,不过应该已经可以解决了,只是还没实践,下面就发上源代码:一共有三个类:MemberModel.java //显示类QQ似好友标签信息的模板类;TestPane.java //添加多个模板的容器类;TestFrame.java //窗体类;核心部分是前面两个类,注意,第二个类的布局方式不能为空,否则不能是容器显示滚动条,这是实现这个面板功能的一个难题,因为我不怎么会使用其他的布局方式,就只经常用空布局,经过这次才知道,光用空布局是不行的,空布局的应用受到了太多的限制。

在TestPane.java中添加好友信息的方式应该是代码添加黑名单信息的方式,可在其他类中调用方法,传递参数(数组)过来,然后对信息模板进行初始化,还有面板上的信息模板从程序刚开始运行就生成了,只是设置了不可见,后点击相关分类标签后的可视与不可视是同理的,也就是说你有多少个好友就一直会有多少个JLabel存在你的面板上,只是你可能看不见他们,我感觉自己的实现方式不是很好。

还有在我所用的这种布局方式中,显示Label的宽度是一定的,我不知道怎么设置他的宽度和高度,所以通过在Label上添加了一个白色图标(185 X 60)来使Label变宽,然后再添加模板JPanel,如果网友们还有好的解决方法,希望不吝赐教。

下面是源码:MemberModel.java 的源代:package coolbaby6;import javax.swing.ImageIcon;import javax.swing.JPanel;import javax.swing.JButton;import java.awt.Color;import java.awt.Rectangle;import javax.swing.JLabel;import java.awt.Dimension;import java.awt.Font;public class MemberModel{private static final long serialVersionUID = 1L;public JButton jButton = null;//显示好友头像;public JPanel jPanel = new JPanel();//模板容器;private JLabel lb_nickName = null;//显示昵称;private int pic;private String nickname = null;private JLabel lb_mood = null;//显示心情;public MemberModel(int pic, String nickname, int len) {super();this.pic = pic;//头像编(有多种方法可以实现,这种最简单)this.nickname = nickname;//昵称;initialize();}private void initialize() {lb_mood = new JLabel();lb_mood.setBounds(new Rectangle(51, 30, 131, 20));lb_mood.setFont(new Font("Dialog", Font.PLAIN, 12));lb_mood.setText("世界上最遥远的距离不是生与死,而是我站在你面前你却不知道我爱你!");lb_mood.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseEntered(java.awt.event.MouseEvent e) {exchangeEnter();lb_mood.setToolTipText(lb_mood.getText());}public void mouseExited(java.awt.event.MouseEvent e) {exchangeExited();}});lb_nickName = new JLabel();lb_nickName.setBounds(new Rectangle(52, 10, 80, 20));lb_nickName.setFont(new Font("Dialog", Font.BOLD, 14));lb_nickName.setText(nickname);jPanel.setSize(new Dimension(185, 60));jPanel.setLayout(null);jPanel.add(getJButton(), null);jPanel.add(lb_nickName, null);jPanel.add(lb_mood, null);jPanel.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseExited(java.awt.event.MouseEvent e) {exchangeExited();//鼠标移出模板区,改变背景颜色;}public void mouseEntered(java.awt.event.MouseEvent e) {exchangeEnter();//鼠标移进模板区,改变背景颜色;}});}private void exchangeEnter() {jPanel.setBackground(new Color(192,224,248));}private void exchangeExited() {jPanel.setBackground(null);}private JButton getJButton() {if (jButton == null) {jButton = new JButton();jButton.setBounds(new Rectangle(8, 10, 40, 40));jButton.setBackground(new Color(236, 255, 236));jButton.setIcon(new ImageIcon("head/"+pic + ".jpg"));jButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseExited(java.awt.event.MouseEvent e) {exchangeExited();//鼠标移出模板区,改变背景颜色;}public void mouseEntered(java.awt.event.MouseEvent e) {exchangeEnter();//鼠标移进模板区,改变背景颜色;}});}return jButton;}}TestPane.java 的源代码:package coolbaby6;import javax.swing.BorderFactory;import javax.swing.JPanel;import javax.swing.JLabel;import javax.swing.BoxLayout;import javax.swing.ImageIcon;public class TestPane extends JPanel {private static final long serialVersionUID = 1L;private JLabel jLabel = null;private JLabel jLabel1 = null;private JLabel jLabel11 = null;private JLabel jLabel12 = null;private int clickF=0;private int clickB=0;public TestPane() {super();initialize();}private void initialize() {jLabel12 = new JLabel();jLabel12.setIcon(new ImageIcon("img/bg.jpg"));jLabel12.add(new MemberModel(3,"CoolBabY3",200).jPanel);jLabel12.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); jLabel11 = new JLabel();jLabel11.setIcon(new ImageIcon("img/bg.jpg"));jLabel11.add(new MemberModel(2,"CoolBabY2",200).jPanel);jLabel11.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); jLabel1 = new JLabel();jLabel1.setIcon(new ImageIcon("img/bg.jpg"));jLabel1.add(new MemberModel(1,"CoolBabY1",200).jPanel);jLabel1.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); jLabel = new JLabel();jLabel.setText("我的好友");jLabel.setIcon(new ImageIcon("img/ico.jpg"));jLabel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); jLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent e) {clickF+=1;if(clickF%2==1){jLabel1.setVisible(false);jLabel11.setVisible(false);jLabel12.setVisible(false);jLabel.setIcon(new ImageIcon("img/ico2.jpg"));update();}else{jLabel1.setVisible(true);jLabel11.setVisible(true);jLabel12.setVisible(true);jLabel.setIcon(new ImageIcon("img/ico.jpg"));update();}}});this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));this.setSize(200, 408);this.setLocation(20, 5);this.add(jLabel, null);this.add(jLabel1, null);this.add(jLabel11, null);this.add(jLabel12, null);addJLabel();}private void update(){//更新UI界面;this.updateUI();}private void clickBlack2(JLabel []jb){//点击标签,将后面的标签全部设为不可视; for(int i=1;i<jb.length;i++){try{jb[i].setVisible(false);}catch(Exception e){e.printStackTrace();}}update();}private void clickBlack(JLabel []jb){//点击标签,将后面的标签全部设为可视;for(int i=1;i<jb.length;i++){try{jb[i].setVisible(true);}catch(Exception e){e.printStackTrace();}}update();}private void addJLabel(){//添加黑名单的内容;final JLabel []jb=new JLabel[7];jb[0] = new JLabel();jb[0].setText("黑名单");jb[0].setIcon(new ImageIcon("img/ico2.jpg"));jb[0].setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));jb[0].addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent e) {clickB+=1;if(clickB%2==1){clickBlack(jb);jb[0].setIcon(new ImageIcon("img/ico.jpg"));}else{clickBlack2(jb);jb[0].setIcon(new ImageIcon("img/ico2.jpg"));}}});this.add(jb[0],null);for(int i=1;i<jb.length;i++){jb[i]=new JLabel();jb[i].setIcon(new ImageIcon("img/bg.jpg"));jb[i].setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));jb[i].add(new MemberModel((i+3),"CoolBabY"+(i+3),200).jPanel);jb[i].setVisible(false);this.add(jb[i],null);}}TestFrame.java 的源代码:package coolbaby6;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.ScrollPaneConstants;import javax.swing.SwingUtilities;public class TestFrame {private JFrame jFrame = null;private JPanel jContentPane = null;private JScrollPane scrollPane=null;public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {TestFrame application = new TestFrame();application.getJFrame().setVisible(true);}});}private JFrame getJFrame() {if (jFrame == null) {jFrame = new JFrame();jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jFrame.setSize(230, 700);jFrame.setTitle("模拟实现QQ面板功能");jFrame.setContentPane(getJContentPane());}return jFrame;}private JScrollPane getScrollPane(){//给添加好友的容器JPanel添加滚动条;if(scrollPane==null){scrollPane=new JScrollPane(new TestPane());scrollPane.setBounds(20,5, 190, 600);scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLL BAR_NEVER );//不显示水平滚动条;return scrollPane;}private JPanel getJContentPane() {//实例化底层的容器JPanel;if (jContentPane == null) {jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getScrollPane());}return jContentPane;}}能成功编译成功我的源代码的方略:①、建一个项目,按我的类名建3个类,将源代码拷贝进去;②、在项目根目录下建一个名为img的文件夹,将要用到的图片放进去。

QQ登陆界面修改教程

QQ登陆界面修改教程

QQ登陆界面修改教程,首先下载一个修改软件:"eXeScope V6.50 汉化版"运行软件后点“文件→打开”点击QQ安装目录下的"LoginCtrl.dll"文件,如图“资源→位图→16050”如图在点“文件→导入”或者直接按F4快捷键导入图片(在我的网盘里面下载到的“D”是大文件,“X”是小文件)导入之后按Ctrl+S保存选择是,如源”下,这次是选择“字符串→104”然后修改右边窗口,如修改完了记得保存!退出软件打开QQ看一下就知道效果啦它QQ版本的只是在“位图”分支里的数值改变了, QQ2005 Beta2版本的的应该选中“资源”,“位图”分支中的“16050”导入小图片,选中“16051”导入大图片, 标题修改方法跟“QQ2005正式版”一样,自己看清楚再导入注意:如果你在上QQ的时候修改,要把“LoginCtrl.dll”文件复制到另外的文件夹单独修改,否则会提示“拒绝写入,以只读模式打开”首先明确一点,QQ登陆界面主要由腾讯文件夹中qq文件夹中的LoginCtrl.dll决定。

所以我们只要能改变它,登陆界面就改了。

但是一般情况下,我们这些不是专业学这个的好象感觉很茫然,所以要借助于外在的软件。

我在网上找到了两个:ResHacker和eXeScope,都是汉化了的,还不错。

大家可以自己到网上找找下面我把我的一点使用心得和大家交流,【建议先全篇阅读一下再动手作】一、前期准备1、换界面么,肯定是要个自己喜欢的画面啦。

所以要作一个自己喜欢的图片。

我建议用photoshop,因为它不会使图片象素丢失。

具体制作我只能简单的和大家说一下2、找到一张自己喜欢的图片,需要的是326*2173、这时新建一个新文件大小就是326*217,4、我把需要的这部分剪下,这部分大小是580*372,粘贴在新的文件里,这还是不符合我们的规定。

这是选择【图像大小】调整一定要约束比例变化,否则人物会变的不合比例,很难看的我把高调为217,长度自动跟着变,但肯定不会变成326,而是156。

QQ登录界面java代码

QQ登录界面java代码
}
}
jp=newJPanel();
jp.setLayout(null);
jp_jlb1=newJLabel(newImageIcon("image/qqtou.gif"));
jp_jlb1.setBounds(18, 10, 85, 85);//设置标签位置前提是要空布局
jp_jtf=newJTextField("QQ号码/手机/邮箱");
this.add(jp,BorderLayout.CENTER);//放到中部
this.setIconImage(newImageIcon("image/qq.gif").getImage());//设置窗口上的qq小图片
this.setResizable(false);//不允许放大,改变窗口大小等
JFrame jf =newJFrame(title);
Containercontainer= jf.getContentPane();
lb1=newJLabel(newImageIcon("image/tou.gif"));
lb2=newJLabel(newImageIcon("image/qqtou.gif"));
this.setSize(380,275);
this.setLocation(500,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
jp_jb2.setFont(f1);
jp_jb2.setBounds(95, 120, 65, 21);
jp_jb3=newJButton("登录");

【Java】JavaWeb登录检查及界面跳转

【Java】JavaWeb登录检查及界面跳转

【Java】JavaWeb登录检查及界⾯跳转场景 ⼀般javaweb⽹站都有⽤户登录,⽽有⼀些操作必须⽤户登录才能进⾏,常见流程:⽤户请求--》后台判断是否登录--》没登录跳转到登录界⾯,登录⽤户正常操作解决思路 在⽤过滤器过滤请求,判断是否登录,如果未登录,返回参数跳转的登录界⾯,登录了的请求放⾏具体实现 新建⼀个web⼯,参考: 新建⼀个LoginFilter过滤器类,继承Filter类1package com.test.login;23import java.io.IOException;4import java.io.PrintWriter;5import java.util.ArrayList;6import java.util.List;78import javax.servlet.Filter;9import javax.servlet.FilterChain;10import javax.servlet.FilterConfig;11import javax.servlet.ServletException;12import javax.servlet.ServletRequest;13import javax.servlet.ServletResponse;14import javax.servlet.http.HttpServletRequest;15import javax.servlet.http.HttpServletResponse;16import javax.servlet.http.HttpSession;1718public class LoginFilter implements Filter {1920public static List<String> pattenURL = new ArrayList<String>();2122 @Override23public void destroy() {24// TODO Auto-generated method stub2526 }2728 @Override29public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)30throws IOException, ServletException {3132 HttpServletRequest httpRequest = (HttpServletRequest) request;33 HttpServletResponse httpResponse = (HttpServletResponse) response;34 HttpSession session = httpRequest.getSession();35// 登陆url36 String loginUrl = httpRequest.getContextPath() + "/login.jsp";37 String url = httpRequest.getRequestURI().toString();3839// 注:在pattenURL中的全部不拦截 url.indexOf(urlStr) > -1 表⽰urlStr在url中出现过,出现就不拦截40for (String urlStr : pattenURL) {41if (url.indexOf(urlStr) > -1) {42 chain.doFilter(request, response);43return;44 }45 }4647//超时处理,ajax请求超时设置超时状态,页⾯请求超时则返回提⽰并重定向,session.getAttribute("")是获取到登录⼈的session信息48if (session.getAttribute("") == null) {49// 判断是否为ajax请求50if (httpRequest.getHeader("x-requested-with") != null51 && httpRequest.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {52 httpResponse.addHeader("sessionstatus", "timeOut"); // 返回超时标识53 httpResponse.addHeader("loginPath", loginUrl);// 返回url54 chain.doFilter(request, response);// 不可少,否则请求会出错55 } else {56// alert('会话过期,请重新登录');57 String str = "<script language='javascript'>" + "window.top.location.href='" + loginUrl + "';</script>";58 response.setContentType("text/html;charset=UTF-8");// 解决中⽂乱码59try {60 PrintWriter writer = response.getWriter();61 writer.write(str);62 writer.flush();63 writer.close();64 } catch (Exception e) {65 e.printStackTrace();66 }67 }68 } else {69 chain.doFilter(request, response);70 }71 }7273/**74 * 过滤器初始化调⽤⽅法在pattenURL中的全部不拦截,所以上⾯会使⽤:path.indexOf(urlStr) > -175*/76 @Override77public void init(FilterConfig config) throws ServletException {78 pattenURL.add("login.jsp");// 登录jsp79 pattenURL.add("login.do");// 登录⽅法80 pattenURL.add("css");// css81 pattenURL.add("image");// image82 pattenURL.add("js");// js83 pattenURL.add("fonts");// fonts8485 }8687 } 在web.xml中注册过滤器1<?xml version="1.0" encoding="UTF-8"?>2<web-app version="3.0" xmlns="/xml/ns/javaee"3 xmlns:xsi="/2001/XMLSchema-instance"4 xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd">56<display-name>test-login</display-name>78<!-- 登录过滤器 -->9<filter>10<description>登录过滤器</description>11<filter-name>loginFilter</filter-name>12<filter-class>com.test.login.LoginFilter</filter-class>13</filter>14<filter-mapping>15<filter-name>loginFilter</filter-name>16<url-pattern>/*</url-pattern>17</filter-mapping>1819<welcome-file-list>20<welcome-file>index.jsp</welcome-file>21</welcome-file-list>2223</web-app> 引⼊⼀个全局的js。

QQ登陆页面试用例(六种方法的)

QQ登陆页面试用例(六种方法的)

QQ登陆页面的测试用例
一、等价类划分法
二、边界值法
在输入框
输入范围是6-11位的数字字符
边界值是5位和12位,
对5位和12位的数字进行测试。

三、场景法
四、判定表法
五、因果图
七、错误推测法
用户名框:
情况一:输入为空
情况二:长度小于6
情况三:长度大于11
情况四:英文字母
情况五:特殊字符
情况六:中文
情况七:转义字符
密码框:
情况一:空
情况二:空格
情况三:小于六位或大于16位
情况四:保留字
情况五:汉字
情况六:功能键
其他情况:
1,用户名与密码不匹配;2,网络连接有问题。

如何在自己的网站上实现QQ授权登录?

如何在自己的网站上实现QQ授权登录?
<img src="/assets/images/Connect_logo_1.png" alt="QQ 授权登录 QQ 授权登录开发 QQ 授权登录管理">
将 client_id 换成你的 AppID,redirect_uri 换成你的回调地址。 如果你要获取其他信息 或者调用其它接口,请将 scope 改成你需要的 API 名或者直接改成 all 。(API 列表可查看 /api%E5%88%97%E8%A1%A8)。
"/"; }else{ alert("获取用户信
息成功!登录失败!"); location.href =
"/blog/to/login"; }
}) }) }) .error(function(f){//失败回调 alert("获取用户信息失败!登录 失败!"); location.href = "/blog/to/login"; }) .complete(function(c){//完成请求 回调 //alert("获取用户信息完成!"); }); }else{ alert("请登录!"); location.href = "/blog/to/login"; } } </script>
顺便贴一下我后台处理步骤:
- //判断 openid 是否存在。
- // 如果 openid 存在,则说明此用户之前登录过或者已与本地 user 表 中的用户绑定。写入 cookie,使用户为登录状态,到此结束。
- //如果用户 openid 不存在,则判断用户名是否存在。
- //如果用户名不存在,则直接生成新的本地用户,并绑定 uid 与 openid。 写入 cookie,使用户为登录状态,到此结束。

QQ仿真登录

QQ仿真登录

QQ仿真登录QQ仿真登录2. [代码]Swing写的QQ登录界面跳至[2] [全屏预览]view sourceprint?001importjava.awt.Container;002import java.awt.Image;003import java.awt.event.ActionEvent;004importjava.awt.event.ActionListener;005 006importjavax.swing.ImageIcon;007importjavax.swing.JButton;008importjavax.swing.JCheckBox;009importjavax.swing.JComboBox;010importjavax.swing.JFrame;011import javax.swing.JLabel;012import javax.swing.JOptionPane;013importjavax.swing.JPasswordField;014importjavax.swing.JTextField;015 016/**017 * 仿QQ登录界面018 *019 * @author jiang020 */021public class GUIQQ extends JFrame {022 // 用户名023 private JTextField username;024 // 密码025 private JPasswordField password;026 // 小容器027 private JLabel jl1;028 private JLabel jl2;029 private JLabel jl3;030 private JLabel jl4;031 032 // 小按钮033 private JButtonbu1;034 private JButton bu2;035 private JButtonbu3;036 037 // 复选框038 private JCheckBox jc1;039 private JCheckBox jc2;040 041 // 列表框042 private JComboBox jcb;043 044 /*045 * 构造方法046*/047 public GUIQQ() {048 // 设置窗口标题049 this.setTitle("QQ2012正式版");050 // 窗体组件初始化051 init();052this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);053 // 设置布局方式为绝对定位054this.setLayout(null);055 056this.setBounds(0, 0, 355, 265);057 // 设置窗体的标题图标058 Image image = newImageIcon("e:/a.gif").getImage();059this.setIconImage(image);060 061 // 窗体大小不能改变062 this.setResizable(false);063064 // 居中显示065this.setLocationRelativeTo(null);066 067 // 窗体可见068 this.setVisible(true);069 }070 071 /*072 * 初始化方法073 */074 public void init() {075// 创建一个容器076 Container con =this.getContentPane();077 jl1 = new JLabel();078// 设置背景图片079 Image image1 = new ImageIcon("e:/background.jpg").getImage();080jl1.setIcon(new ImageIcon(image1));081jl1.setBounds(0, 0, 355, 265);082 083 // QQ 登录头像设定084 jl2 = new JLabel();085Image image2 = new ImageIcon("e:/a.gif").getImage();086jl2.setIcon(new ImageIcon(image2));087jl2.setBounds(40, 95, 50, 60);088 089 // 用户号码登录输入框090 username = new JTextField();091 username.setBounds(100, 100, 150, 20);092 // 用户号码登录输入框旁边的文字093 jl3 = new JLabel("注册账号");094 jl3.setBounds(260, 100, 70, 20);095 096 // 密码输入框097 password = new JPasswordField();098 password.setBounds(100, 130, 150, 20);099 // 密码输入框旁边的文字100jl4 = new JLabel("找回密码");101 jl4.setBounds(260, 130, 70, 20);102 103 // 输入框下方文字104jc1 = new JCheckBox("记住密码");105jc1.setBounds(105, 155, 80, 15);106 jc2 = new JCheckBox("自动登录");107 jc2.setBounds(185, 155, 80, 15);108 109 // 用户登录状态选择110jcb = new JComboBox();111 jcb.addItem("在线");112 jcb.addItem("隐身");113 jcb.addItem("离开");114 jcb.setBounds(40, 150, 55, 20);115 116 // 按钮设定117 bu1 = new JButton("登录");118bu1.setBounds(280, 200, 65, 20);119 // 给按钮添加1个事件120 bu1.addActionListener(new ActionListener() {121 122@Override123 public voidactionPerformed(ActionEvent e) {124 String str=e.getActionCommand();125 if("登录".equals(str)){126 String getName=username.getText();127// String getPwd =password.getText();128JOptionPane.showConfirmDialog(null, "您输入的用户名是"+getName);129 }130131 }132 });133 134135 bu2 = new JButton("多账号");136bu2.setBounds(5, 200, 75, 20);137 bu3 = new JButton("设置");138 bu3.setBounds(100, 200, 65, 20);139 140 // 所有组件用容器装载141jl1.add(jl2);142 jl1.add(jl3);143jl1.add(jl4);144 jl1.add(jc1);145jl1.add(jc2);146 jl1.add(jcb);147jl1.add(bu1);148 jl1.add(bu2);149jl1.add(bu3);150 con.add(jl1);151con.add(username);152 con.add(password);153154 }155 156 public static void main(String[] args) {157 // 实例化对象158 GUIQQ qq = new GUIQQ();159 }160 161}。

java笔记4(布局管理器常用组件qq聊天界面记事本)

java笔记4(布局管理器常用组件qq聊天界面记事本)

Java笔记4(布局管理器、常用组件、qq聊天界面、记事本)文件结构Java代码布局管理器Demo8_1.java package com.test1; import javax.swing.JButton; import javax.swing.JFrame; public classDemo8_1 extends JFrame //继承JFrame { /*** @param args */ public static voidmain(String[] args) { Demo8_1 demo8_1=new Demo8_1(); } //把需要的组件定义在这里JButton jb1=null; //定义一个按钮//构造函数public Demo8_1() { ////JFrame是一个顶层容器类(可以添加其它swing组件的类) //JFrame jf=new JFrame(); //给窗体设置标题this.setTitle("Hello world"); //设置大小,按像素this.setSize(200, 200); //设置初始位置this.setLocation(100,200); //创建一个按钮jb1=new JButton("我是一个按钮!"); //添加JButton组件this.add(jb1); //设置当关闭窗口时,保证JVM也退出this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } } 常用组件常Demo8_2.java /* * BorderLayout演示*1.继承JFrame *2.定义组件*3.创建组件(构造函数) *4.添加组件*5.对窗体设置*6.显示窗体*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_2 extends JFrame{ /** * @param args */ //定义组件JButton jb1,jb2,jb3,jb4,jb5; public static void main(String[] args) { // TODOAuto-generated method stub Demo8_2demo8_2=new Demo8_2(); } publicDemo8_2() { //创建组件jb1=new JButton("中部"); jb2=new JButton("北部"); jb3=new JButton("南部"); jb4=new JButton("东部");jb5=new JButton("西部"); //添加各个组件this.add(jb1,BorderLayout.CENTER);this.add(jb2,BorderLayout.NORTH);this.add(jb3,BorderLayout.SOUTH);this.add(jb4,BorderLayout.EAST);this.add(jb5,BorderLayout.WEST); //设置窗体属性this.setTitle("边界布局的案例");this.setSize(300,200); this.setLocation(200,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗体this.setVisible(true); } }Demo8_3.java /* * 功能:流式:流式布局案例*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_3 extends JFrame{ /** * @param args */ //定义需要的组件JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args) { // TODOAuto-generated method stub Demo8_3 demo8_3=new Demo8_3(); } //构造函数public Demo8_3() { //创建组件jb1=new JButton("关羽"); jb1.setSize(100, 100); jb2=new JButton("张飞"); jb3=new JButton("赵云");jb4=new JButton("马超"); jb5=new JButton("黄忠");jb6=new JButton("魏延"); //添加组件this.add(jb1); this.add(jb2); this.add(jb3);this.add(jb4); this.add(jb5); this.add(jb6);//设置布局管理器this.setLayout(newFlowLayout(FlowLayout.LEFT)); //设置窗体属性this.setTitle("流式布局案例"); this.setSize(350,200); this.setLocation(200,200); //禁止用户改变窗体大小this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } }swing编程实战Demo8_4.java /* * 风格布局*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_4 extends JFrame{ int size=9; //定义组件JButton jbs[]=new JButton[size]; public static void main(String[] args) { // TODO Auto-generated method stub //创建实例Demo8_4demo8_4=new Demo8_4(); } //构造函数public Demo8_4() { //创建组件for(inti=0;ijava /* * 多种布局管理器的使用*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_5 extends JFrame { //定义组件JPanel jp1,jp2; JButton jb1,jb2,jb3,jb4,jb5,jb6; public static void main(String[] args) { // TODO Auto-generated method stub Demo8_5 demo8_5=new Demo8_5(); }//构造函数public Demo8_5() { //创建组件//JPanel布局默认是FlowLayout jp1=new JPanel();jp2=new JPanel(); jb1=new JButton("西瓜");jb2=new JButton("苹果"); jb3=new JButton("荔枝");jb4=new JButton("葡萄"); jb5=new JButton("桔子");jb6=new JButton("香蕉"); //设置布局//添加jp1.add(jb1); jp1.add(jb2); jp2.add(jb3);jp2.add(jb4); jp2.add(jb5); //把Panel 加入JFrame this.add(jp1,BorderLayout.NORTH); this.add(jb6,BorderLayout.CENTER);this.add(jp2,BorderLayout.SOUTH);this.setSize(300,150); this.setLocation(200,200); this.setVisible(true); } } Demo8_6.java package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_6 extends JFrame{ /** * @param args */ //定义组件JPanel jp1,jp2,jp3; //三个子面板JLabeljlb1,jlb2; //标签JButton jb1,jb2; //两个按钮JTextField jtf1,jpf1; //两个文本输入框public static void main(String[] args) { // TODOAuto-generated method stub Demo8_6demo8_6=new Demo8_6(); } //构造函数public Demo8_6() { jp1=new JPanel();jp2=new JPanel(); jp3=new JPanel();jlb1=new JLabel("用户名:"); jlb2=new JLabel("密码:"); jb1=new JButton("登录"); jb2=new JButton("取消"); jtf1=new JTextField(10); //用户名文本框jpf1=new JPasswordField(10); //密码文本框//设置布局管理this.setLayout(new GridLayout(3,1));//加入各个组件jp1.add(jlb1); jp1.add(jtf1);jp2.add(jlb2); jp2.add(jpf1); jp3.add(jb1);jp3.add(jb2); //加入到JFrame this.add(jp1); this.add(jp2); this.add(jp3); this.setTitle("会员管理系统"); this.setSize(250,130);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_7.java/* * 复选框或单选框的案例*/ package com.test1; import java.awt.*; importjavax.swing.*; public class Demo8_7 extends JFrame{ //定义JPanel jp1,jp2,jp3;JLabel jl1,jl2; JButton jb1,jb2; JCheckBoxjcb1,jcb2,jcb3; JRadioButton jrb1,jrb2;ButtonGroup bg; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_7 dmeo8_7=new Demo8_7(); } //构造函数public Demo8_7() { //创建组件jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jl1=new JLabel("你喜欢的运动:");jl2=new JLabel("你的性别:"); jb1=new JButton("注册用户"); jb2=new JButton("取消注册");jcb1=new JCheckBox("足球"); jcb2=newJCheckBox("篮球"); jcb3=new JCheckBox("网球");jrb1=new JRadioButton("男"); jrb2=new JRadioButton("女"); //一定要把jrb1,jrb2放入到一个ButtonGroup ButtonGroup bg=new ButtonGroup(); bg.add(jrb1); bg.add(jrb2);//设置布局管理器this.setLayout(new GridLayout(3,1)); //添加组件jp1.add(jl1); jp1.add(jcb1);jp1.add(jcb2); jp1.add(jcb3); jp2.add(jl2);jp2.add(jrb1); jp2.add(jrb2); jp3.add(jb1);jp3.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.setSize(300,150);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_8.java/* * JCombobox/JList/JScrollPane */package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_8 extends JFrame { //定义JPanel jp1,jp2;JLabel jl1,jl2; JComboBox jcb1; JList jlist; JScrollPane jsp; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_8 demo8_8=new Demo8_8(); } //构造函数public Demo8_8() { jp1=new JPanel(); jp2=new JPanel(); jl1=new JLabel("你的籍贯:"); jl2=new JLabel("旅游地点:"); String []jg={"北京","上海","天津","火星"}; jcb1=new JComboBox(jg); String []dd={"九寨沟","故宫","长城","兵马俑"}; jlist=new JList(dd);jlist.setVisibleRowCount(2);//设置你希望显示多少个选项jsp=new JScrollPane(jlist); //设置布局this.setLayout(new GridLayout(3,1)); //添加组件jp1.add(jl1); //加到面板1当中jp1.add(jcb1);jp2.add(jl2); //加到面板2当中jp2.add(jsp);this.add(jp1); //把面板加入到窗体当中this.add(jp2); //设置窗体属性this.setSize(200,180);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_9.java /* * 词霸*/ package com.test1;import java.awt.*; import javax.swing.*;public class Demo8_9 extends JFrame{ //定义组件JSplitPane jsp; JList jList; JLabel jl1; public static void main(String[] args) { // TODOAuto-generated method stub Demo8_9demo8_9=new Demo8_9(); } publicDemo8_9() { //创建组件String []words={"迈克尔-杰克逊","中国","导游"}; jList=new JList(words); jl1=new JLabel(new ImageIcon("images/迈克尔-杰克逊2.jpg")); //拆分窗格jsp=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,jList,jl1);//设置窗格可以伸缩jsp.setOneTouchExpandable(true); //设置布局管理器//添加组件this.add(jsp);//设置大小this.setSize(550,632);this.setLocation(200,200);this.setVisible(true); } }Demo8_10.java /* * qq聊天器*/package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_10 extends JFrame{ JTextArea jta=null; JScrollPane jsp=null; //滚动面板JPanel jp1=null;JComboBox jcb=null; JTextField jtf=null; JButton jb=null; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_10 demo8_10=new Demo8_10(); }//构造public Demo8_10() { jta=new JTextArea(); jsp=new JScrollPane(jta); //为文本域添加滚动条jp1=new JPanel(); String []chatter={"布什","拉登"}; jcb=new JComboBox(chatter);jtf=new JTextField(10); jb=new JButton("发送");//设置布局//添加组件jp1.add(jcb);jp1.add(jtf); jp1.add(jb); //加入JFrame this.add(jsp); this.add(jp1,BorderLayout.SOUTH);//设置窗体属性this.setSize(300,200);this.setIconImage((newImageIcon("images\\rowin2.gif")).getImage());this.setTitle("简单QQ");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }Demo8_11.java /* * qq登录界面制作*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_11 extends JFrame{ //北部区域JLabel jl1; //南部区域JButton jb1,jb2,jb3; JPanel jp1;//中部区域JTabbedPane jtp;//选项卡窗格JPanel jp2,jp3,jp4;//三个子面板JLabeljl2,jl3,jl4,jl5; //号码输入文本框JTextField jtf; //密码JPasswordField jpf; //清除号码button JButton jb4; //隐身登录,记住密码JCheckBoxjcb1,jcb2; public Demo8_11() { //创建组件jl2=new JLabel("QQ号码",JLabel.CENTER);jl3=new JLabel("QQ密码",JLabel.CENTER); jl4=new JLabel("忘记密码",JLabel.CENTER);jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体样式jl4.setForeground(Color.BLUE);//设置字体颜色jl5=new JLabel("申请密码保护");jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_ CURSOR)); //输入号码框jtf=new JTextField(); //输入密码框jpf=new JPasswordField(); jb4=new JButton(newImageIcon("images\\清除号码.jpg")); //复选框jcb1=new JCheckBox("隐身登录"); jcb2=new JCheckBox("记住密码"); //北部区域jl1=new JLabel(new ImageIcon("images\\老虎.jpg"));//南部区域jp1=new JPanel(); jb1=newJButton(new ImageIcon("images\\登录.gif")); jb2=new JButton(new ImageIcon("images\\取消.gif")); jb3=new JButton(new ImageIcon("images\\向导.gif")); //中部区域jtp=new JTabbedPane(); jp2=new JPanel(); jp3=new JPanel();jp3.setBackground(Color.RED);//给面板设置背景颜色jp4=new JPanel(); jp4.setBackground(newColor(0,0,255));//用另一种方法设置背景颜色//将面板添加到选项卡窗格上jtp.add("QQ号码",jp2); //第一个参数代表选项卡的名称,第二个参数代表面板jtp.add("手机号码",jp3); jtp.add("电子邮箱",jp4);//设置布局jp2.setLayout(new GridLayout(3,3));//添加组件//南部jp1.add(jb1); jp1.add(jb2); jp1.add(jb3); //中部jp2.add(jl2);//QQ号码jp2.add(jtf);//号码框jp2.add(jb4);//清除号码按钮jp2.add(jl3);//密码jp2.add(jpf);//密码框jp2.add(jcb1);//记住密码jp2.add(jcb2);//隐身登录jp2.add(jl5);//申请密码保护this.add(jp1,BorderLayout.SOUTH);//加入南部子面板this.add(jl1,BorderLayout.NORTH);//加入北部子面板this.add(jtp,BorderLayout.CENTER);//把选项卡加入中部//展现组件ImageIcon icon=newImageIcon("images\\rowin.gif");this.setIconImage(icon.getImage());this.setSize(350,240); this.setLocation(300,400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { newDemo8_11(); } } Demo8_12.java /* * 记事本界面*/ package com.test1;import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Demo8_12 extends JFrame{ JMenuBar jmb;//菜单条组件JMenu menu1,menu2,menu3,menu4,menu5;JMenuItem item2,item3,item4,item5,item6,item7;JMenu xinjian;//二级菜单JMenuItem file,project; JTextArea jta; //文本输入区域//工具条JToolBar jtb; JButton jb1,jb2,jb3,jb4,jb5,jb6;public Demo8_12() { //创建组件jtb=new JToolBar(); jb1=new JButton(newImageIcon("images\\new.jpg")); jb1.setToolTipText("新建");//设置提示信息jb2=new JButton(new ImageIcon("images\\open.jpg")); jb2.setToolTipText("打开"); jb3=new JButton(newImageIcon("images\\save.jpg")); jb4=newJButton(new ImageIcon("images\\copy.jpg"));jb5=new JButton(new ImageIcon("images\\cut.jpg"));jb6=new JButton(new ImageIcon("images\\paste.jpg")); jmb=new JMenuBar(); menu1=new JMenu("文件(F)"); menu1.setMnemonic('F');//设置助记符menu2=new JMenu("编辑(E)");menu2.setMnemonic('E'); menu3=new JMenu("格式(O)"); menu3.setMnemonic('O'); menu4=new JMenu("查看(V)"); menu4.setMnemonic('V');menu5=new JMenu("帮助(H)");menu5.setMnemonic('H'); //item1=new JMenuItem("新建"); xinjian=new JMenu("新建");file=new JMenuItem("文件"); project=new JMenuItem("工程"); item2=new JMenuItem("打开",new ImageIcon("new.gif")); item3=new JMenuItem("保存(s)"); item3.setMnemonic('s');//给菜单添加快捷方式item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.V K_S,InputEvent.ALT_MASK)); item4=new JMenuItem("另存为"); item5=new JMenuItem("页面设置"); item6=new JMenuItem("打印"); item7=new JMenuItem("退出"); jta=new JTextArea();//设置布局//添加组件//将按钮添加到工具条上jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6);//将菜单项添加到菜单上xinjian.add(file);xinjian.add(project); menu1.add(xinjian);menu2.add(item2); menu1.add(item3);menu1.add(item4); menu1.addSeparator();//添加分割线menu1.add(item5); menu1.add(item6);menu1.addSeparator(); menu1.add(item7);//将菜单添加到菜单条上jmb.add(menu1);jmb.add(menu2); jmb.add(menu3);jmb.add(menu4); jmb.add(menu5); //将菜单条添加到窗体上this.setJMenuBar(jmb);//将工具条添加到窗体上this.add(jtb,BorderLayout.NORTH); //给文本域添加滚动条JScrollPane jsp=new JScrollPane(jta); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SC ROLLBAR_AS_NEEDED); this.add(jsp); //展现this.setTitle("记事本"); ImageIcon icon=new ImageIcon("images\\rowin.gif");this.setIconImage(icon.getImage());//设置窗体图标this.setSize(500,400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { Demo8_12 demo8_12=new Demo8_12(); } }。

Java实现简单的QQ聊天

Java实现简单的QQ聊天
Java 实现 QQ 聊天功能
一、界面的介绍
1、登录界面
第一次登录需要注册,该程序使用的数据库是 Mysql。首先要建立 test 数据 库,在 test 数据库中创建一个表 jdbctest。
从表中可以看出有 8 个字段,除 id 外(设置为自动分配) 。 2、注册界面 点击立刻注册按钮,会弹出注册窗口:
二、以下是完整的代码:
1、ChatServe.java:
package Chat; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException;
import java.io.IOException; import .*; import java.util.*; public class ChatServer { static boolean started = false; static boolean bconnected = false; static ServerSocket ss = null; static Socket s = null; ArrayList<Client> clients = new ArrayList<Client>(); public static void main(String[] args) { new ChatServer().start(); } public void start(){ try { ss = new ServerSocket(8888); started=true; }catch (BindException e) { System.out.println("端口使用中......."); }catch (IOException e) { e.printStackTrace(); } try{ while(started){ s = ss.accept(); Client c = new Client(s); System.out.println("a client connect"); new Thread(c).start(); clients.add(c); } }catch (IOException e) { e.printStackTrace(); }finally{ try { ss.close(); } catch (IOException e) { e.printStackTrace(); } } }

Android手机通用登陆界面代码设计

Android手机通用登陆界面代码设计
// check if the Stored password matches with Password entered by user if(password.equals(storedPassword)) {
Toast.makeText(HomeActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();
public class LoginDataBaseAdapter {
static final String DATABASE_NAME = "login.db"; static final int DATABASE_VERSION = 1; public static final int NAME_COLUMN = 1; // TODO: Create public field for each column in your table. // SQL Statement to create a new database. static final String DATABASE_CREATE = "create table "+"LOGIN"+
// Insert the row into your table db.insert("LOGIN", null, newValues); ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show(); } public int deleteEntry(String UserName) { //String id=String.valueOf(ID); String where="USERNAME=?"; int numberOFEntriesDeleted= db.delete("LOGIN", where, new String[]{UserName}) ; // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();

VS设计QQ用户登陆

VS设计QQ用户登陆

Visual_C#__2008——设计QQ用户登录界面第2章设计QQ用户登录界面通过第1章的学习,应当对Visual C # 2008的开发环境有了一个初步的了解。

用户界面是应用程序的重要组成部分,本章将介绍使用窗体设计器、工具箱以及属性窗口设计一个QQ登录界面。

通过对本章的学习,在学会设计QQ 登录界面的同时,还能了解设计用户界面的一些相关知识,如Visual C# 2008工具箱、属性窗口的使用,以及使用【格式】菜单的菜单命令来美化用户界面等。

2.1 用户界面设计用户界面设计是Visual C# 2008程序设计中非常重要的工作,本节首先介绍了用户界面的概述和类型,然后再介绍设计用户界面的一些基本原则,读者在设计用户界面时,应当遵循这些基本原则。

2.1.1 用户界面概述用户界面是应用程序的重要组成部分,设计用户界面时,有许多问题需要考虑:例如一共需要使用多少个窗体、要不要使用菜单、要不要创建工具栏、采用什么样的方式来与用户交换信息、应当给用户提供哪些帮助等。

由此可见,在设计用户界面之前,应当了解该应用程序的用途及用户的计算机水平层次,据此设计出合理、美观的用户界面,用户界面决定了应用程序的易用性,从而决定了应用程序的整体质量。

2.1.2 用户界面的类型基于Windows应用程序的用户界面主要有两种类型:第一种是单文档界面(SDI),第二种是多文档界面(MDI)。

Microsoft Windows操作系统中自带的写字板程序就是一个单文档界面应用程序的例子,它只能处理一个文档,如需要处理另一个文档,则必须关闭前一个文档,写字板程序如图2-1所示。

图2-1 写字板——单文档界面应用程序多文档界面应用程序有很多,如Microsoft Excel,它允许同时处理多个文档,如图2-2所示,可以通过窗口菜单来切换当前窗口中的活动文档。

图2-2 Microsoft Excel——多文档界面应用程序开发应用程序时,应当根据应用程序的需要来确定采用哪一种用户界面。

VB制作QQ登录界面

VB制作QQ登录界面

V B制作Q Q登录界面Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】西南财经大学天府学院VB实验报告实验名称:第二个VB程序姓名:刘星学号: 41402803 班级: 14级工商23班实验时间: 2015/9/19一、实验目的VB程序制作实现QQ登录二、实验内容及步骤题目一:QQ登录程序设计实验步骤:1.打开VB,修改文本字体、大小(font);2.点击label, ,画出label1、label2、label3,分别修改caption为“账号:”“密码:”“状态:”;3.点击combobox,在账号和状态后面画出combo1,combo2;4.在combo1账号的text中设置账号默认值“41402803”,combo2状态的text中设置默认值“在线”5.点击textbox,在label密码后面画出text1,删除文本text6.点击checkbox,在适当位置画出check1和check2,分别修改caption为“记住密码”,“自动登录”7.点击commandbutton,修改caption中“command1”为“登录”;8.双击commandbutton,弹出代码编辑器,编辑如图;9运行程序,单击运行→启动,单击显示,检验,单击结束;10.点击文件→保存工程,新建文件夹,命名保存窗口文件和工程文件题目二:在第一个VB程序的基础上实现如下功能:单击“显示”按钮,在文本框中显示“欢迎使用VB6.0,你真棒!”,再次单击“显示”按钮,文本框里面不再显示任何内容。

实验步骤:1.打开VB,修改文本字体、大小(font);2.点击TextBox ,画出文本框;3.点击commandbutton,画出命令框;4.选中命令框,修改caption中“command1”为“显示”;5.选中文本框,将Text中“text1”删除,并改为“欢迎使用VB6.0,你真棒!”;6.若文字未自动换行,再选中“MultiLline”,将 false 改为 true;7.双击命令按钮,弹出代码编辑器,编辑如图;8.运行程序,单击运行→启动,单击显示,检验,单击结束;9.点击文件→保存工程,新建文件夹,命名保存窗口文件和工程文件三、实验思考题1.组合框combo中的list输入账号,shift+enter键账号换行。

QQ登陆代码

QQ登陆代码

QQ登陆代码HTML⽂件中放置QQ登陆按钮<a href="redirect.asp" target=_self data-role="button" class="ui-btn-right" style="height:24px;line-height:24px;"><img src="Images/bt_blue.png" height="24" alt="QQ登录" border="0"></a>Redirect.asp⽂件内容如下:<!--#include file="qqconnect.asp"--><%Dim qc, urlSession("Code")=""Session("Openid")=""Session("Access_Token")=""SET qc = New QqConnetSession("State")=qc.MakeRandNum()url = qc.GetAuthorization_Code()Response.Redirect(url)Set qc=Nothing%>qqconnect.asp内容如下:<script language="jscript" runat="server">function getjson(str){try{eval("var jsonStr = (" + str + ")");}catch(ex){var jsonStr = null;}return jsonStr;}</script><%'=================================='=类名称:QqConnet'=功能:QQ登录 For ASP'=作者:㊣FireFox㊣'=Q Q: 63572063'=⽇期:2012-01-02'=================================='转载时请保留以上内容!!Class QqConnetPrivate QQ_OAUTH_CONSUMER_KEYPrivate QQ_OAUTH_CONSUMER_SECRETPrivate QQ_CALLBACK_URLPrivate QQ_SCOPEPrivate oDic,aKeys,access_token,TimeLine,boundary'销毁对象Private Sub Class_Terminate()Set oDic = NothingEnd SubPrivate Sub Class_InitializeQQ_OAUTH_CONSUMER_KEY = " "'APP IDQQ_OAUTH_CONSUMER_SECRET = " "'APP KEYQQ_CALLBACK_URL = " "'REDIRECT_URIQQ_SCOPE ="get_user_info" '授权项例如:QQ_SCOPE=get_user_info,list_album,upload_pic,do_like,add_t'不传则默认请求对接⼝get_user_info进⾏授权。

web实现QQ第三方登录

web实现QQ第三方登录

开放平台-web实现QQ第三方登录 --------肖宏伟应用场景web应用通过QQ登录授权实现第三方登录。

操作步骤1 注册成为QQ互联平台开发者,/2 准备一个可访问的域名,如3 创建网页应用,配置必要信息,其中包括域名以及回调地址;其中域名需要验证,需确保对域名主机有足够的控制权限4 获取应用appID、appKey进行开发登录流程开发平台的登录授权采取oauth2.0机制,这也是目前几乎所有互联网开放平台所采取的方式。

需更多了解oauth2.0可参考阮老师的文章:/blog/2014/05/oauth_2_0.html实现方式client-side流程:前端页面通过Implict方式登录授权 -> 回调获得accessToken -> 获取openid -> 同步用户信息并登录为了保证数据安全,在获取用户信息并登录这一步必须由服务端实现。

这种方式的开发相对便捷,也是后面的实战案例将要采取的方式。

server-side流程:由server端页面跳转到登录授权页面(Authorization code方式) -> 回调获得code -> 置换accessToken -> 获取openid -> 同步用户信息并登录可参考:/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_serve r-sideSDK使用JSSDK 可快捷实现前端登录授权的功能,可自定制登录按钮使用文档:/js_sdk%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E 缺点:存在浏览器兼容风险,此外登录按钮UI的定制也存在受限JavaSDK 屏蔽了oauth授权的复杂度,方便后端实现授权及api操作缺点:增加依赖jar包,项目容易变得臃肿,尤其是当前项目已经存在oauth功能实现时可不必采用。

案例实战功能描述clientside + server-side 通过QQ网页授权登录,并获取用户信息1 本地开发环境准备修改hosts文件将映射到127.0.0.1;本地服务器以80端口启动,windows下可能会出现80端口被系统进程占用的情况,解决方法可参考/littleatp/p/4414578.html本地服务器启动后,以的域名进行访问,在QQ登录授权时可通过域名验证这一步2 登录跳转页面<html><head><title>QQ登录跳转</title><scriptsrc="/js/jquery/1.7.2/jquery.min.js"type="text/javascript"></script><script type="text/javascript">//切割字符串转换参数表function toParamMap(str){var map = {};var segs = str.split("&");for(var i in segs){var seg = segs[i];var idx = seg.indexOf('=');if(idx < 0){continue;}var name = seg.substring(0, idx);var value = seg.substring(idx+1);map[name] = value;}return map;}//隐式获取url响应内容(JSONP)function openImplict(url){var script = document.createElement('script');script.src = url;document.body.appendChild(script);}//获得openid的回调function callback(obj){var openid = obj.openid;$("#openid").text(openid);//跳转服务端登录urlvar resulturl = "@{openapi.QQs.login_result()}";var accessToken = $("#accessToken").text();//向服务端传输access_token及openid参数document.location.href=resulturl + "?access_token=" + accessToken + "&openid=" + openid;}</script></head><body><p>AccessToken:<span id="accessToken"></span>--ExpireIn<span id="expire"></span></p><p>OpenID:<span id="openid"></span></p><!-- 执行脚本 --><script type="text/javascript">//应用的APPIDvar appID = "101207268";//登录授权后的回调地址,设置为当前urlvar redirectURI = "@@{openapi.QQs.login()}";//初始构造请求if (window.location.hash.length == 0){var path = 'https:///oauth2.0/authorize?';var queryParams = ['client_id=' + appID,'redirect_uri=' + redirectURI,'scope=' +'get_user_info,list_album,upload_pic,add_feeds,do_like','response_typ e=token'];var query = queryParams.join('&');var url = path + query;window.location.href= url;}//在成功授权后回调时location.hash将带有access_token信息,开始获取openidelse{//获取access tokenvar accessToken = window.location.hash.substring(1);var map = toParamMap(accessToken);//记录accessToken$("#accessToken").text(map.access_token);$("#expire").text(map.expires_in);//使用Access Token来获取用户的OpenIDvar path = "https:///oauth2.0/me?";var queryParams = ['access_token='+map.access_token,'callback=callback'];var query = queryParams.join('&');var url = path + query;openImplict(url);}</script></body></html>功能描述页面在第一次打开时跳转到QQ登录授权页面;授权成功之后回到当前页面通过url参数(hash串)获得accessToken;此后可通过jsonp方式获取用户的openid,url如:https:///oauth2.0/me?access_token=YOUR_ACCESS_TOKEN 获取到用户OpenID,返回包如下(JSONP方式获取):callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} )将access_token及openid传到服务端进行处理3 server端获取用户信息接收openid的页面方法/*** 登录结果** @param access_token* @param openid*/public static void login_result(String access_token, String openid) {//调用api获取qq用户信息QQUserInfo user = QQApi.getUserInfo(access_token, openid);//此时若取得user信息,则可以进行保存,并执行用户登录操作....//登录成功后跳转redirect(xxx);}QQApi的实现/*** QQ互联API** <pre>* 登录流程:** 1 前端跳转qq授权页面* 2 js获得access_token* 3 通过jsonp方式获得openid* 4 server端根据上传的access_token及openid获取用户信息,如昵称、头像** 参考文档:*/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_clien t-side#Step2.EF.BC.9A.E8.8E.B7.E5.8F.96AccessToken* </pre>** @author xxx* @createDate 2015年3月10日**/public class QQApi {public static String appId = "xxx";public static String appSecret = "xxx";public static String baseUrl = "https://";protected static final String URL_GET_USERINFO = baseUrl+"/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s" ;protected static final long ACCESS_TIMEOUT = 15;protected static final String DEF_APP_TOKEN_EXPIRE = "3h";/*** 获取用户信息** <pre>* /get_user_info*** 调用地址:* https:///user/get_user_info* 参数* access_token=*************&* oauth_consumer_key=12345&* openid** 返回结果如下:* {* "ret": 0,* "msg": "",* "is_lost": 0,* "nickname": "小吞",* "gender": "女",* "province": "广东",* "city": "广州",* "year": "1993",* "figureurl":"/qzapp/101207268/982C9FEADAF7B242C5069B8F390784 BF/30",* "figureurl_1":"/qzapp/101207268/982C9FEADAF7B242C5069B8F390784 BF/50",* "figureurl_2":"/qzapp/101207268/982C9FEADAF7B242C5069B8F390784 BF/100",* "figureurl_qq_1":"/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/4 0",* "figureurl_qq_2":"/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/1 00",* "is_yellow_vip": "0",* "vip": "0",* "yellow_vip_level": "0",* "level": "0",* "is_yellow_year_vip": "0"* }* </pre>** @param accessToken* @return*/public static QQUserInfo getUserInfo(String accessToken, String openid) {if (StringUtils.isEmpty(accessToken) ||StringUtils.isEmpty(openid)) {return null;}String url = String.format(URL_GET_USERINFO, accessToken, appId, openid);String resultString = DefaultHttp.get(url, ACCESS_TIMEOUT, GlobalConstants.UTF_8);Logger.debug("[sso-qq]get userinfo. use url '%s'", url);QQUserInfo userinfo = JsonUtil.fromJson(resultString, QQUserInfo.class);if (userinfo == null || !userinfo.hasGot()) {Logger.debug("[sso-qq]get userinfo failed, with result of '%s'", resultString);return null;}Logger.debug("[sso-qq]get userinfo success, with result of '%s'", resultString);return userinfo;}。

用JAVA编写一个用户登陆界面用户验证通过数据库实现

用JAVA编写一个用户登陆界面用户验证通过数据库实现

用JAVA编写一个用户登陆界面用户验证通过数据库实现用户登录界面的实现可以分为以下几个步骤:1.用户界面设计2.数据库连接接下来,我们需要连接到数据库以验证用户的登录信息。

可以使用Java中的JDBC来连接数据库。

在连接数据库之前,需要准备好数据库的相关信息,如数据库驱动程序的引入、数据库连接URL、用户名和密码等。

3.用户验证一旦连接成功,我们可以使用SQL查询语句来验证用户的登录信息。

可以编写一个方法,传入用户输入的用户名和密码作为参数,并在数据库中查找是否存在匹配的用户记录。

可以使用PreparedStatement对象来执行SQL查询语句,查询结果将返回一个ResultSet对象。

4.处理验证结果根据查询结果,我们可以判断用户的登录是否成功。

如果有匹配的记录,则表示用户验证通过,可以跳转到下一个界面或执行其他操作。

如果没有匹配的记录,则表示用户验证失败,可以弹出错误提示框或执行其他错误处理逻辑。

5.关闭数据库连接在完成用户验证后,我们需要关闭数据库连接,释放相关资源。

可以在finally块中关闭连接,并通过try-catch-finally语句来确保连接的安全关闭。

以下是一个示例代码,用于实现用户登录界面的功能:```javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class UserLoginprivate static final String DB_URL ="jdbc:mysql://localhost:3306/mydatabase"; // 数据库连接URL private static final String DB_USER = "root"; // 数据库用户名public static void main(String[] args)//创建用户界面//用户界面设计略//监听登录按钮点击事件loginButton.setOnAction(event ->String username = usernameTextField.getText(;String password = passwordTextField.getText(;boolean result = validateUser(username, password);if (result)//用户验证通过,跳转到下一个界面或执行其他操作} else//用户验证失败,弹出错误提示框或执行其他错误处理逻辑}});}private static boolean validateUser(String username, String password)Connection conn = null;PreparedStatement stmt = null;ResultSet rs = null;boolean result = false;try//连接数据库conn = DriverManager.getConnection(DB_URL, DB_USER,DB_PASSWORD);//执行查询String sql = "SELECT * FROM users WHERE username = ? AND password = ?";stmt = conn.prepareStatement(sql);stmt.setString(1, username);stmt.setString(2, password);rs = stmt.executeQuery(;//判断查询结果if (rs.next()result = true; // 用户验证通过} elseresult = false; // 用户验证失败}} catch (SQLException e)//异常处理逻辑} finally//关闭连接和释放资源tryif (rs != null)rs.close(;}if (stmt != null)stmt.close(;}if (conn != null)conn.close(;}} catch (SQLException e)//异常处理逻辑}}return result;}```以上代码仅为示例,具体的实现可以根据自己的需求进行调整。

计算机网络课程设计大作业

计算机网络课程设计大作业

研究生课程《计算机网络》课程设计论文题目:利用Java语言的Socket编程实现网络环境下两台计算机之间的字符聊天功能学院:信息工程与自动化学院专业:电子与通信工程年级:2013级学号:姓名:分数1设计项目分析1.1需求分析1.1.1性能需求利用Java 语言的Socket编程实现网络环境下两台计算机之间的字符聊天功能。

一个QQ系统由一个服务器和若干个客户端组成。

服务器和叫客户端之间通过TCP/IP网络协议通信。

客户端的为用户服务的。

客户端的功能:一是用户通过登入界面启动与服务器的连接,并发送用户的基本信息给服务器;二是客户端界面可以收到好友发送的信息,也能给好友发送信息。

服务器为客户端服务的。

服务器提供的功能是:一是等待客户端的连接,客户端连接上,保存客户端信息,并发信息告诉其它在线客户XX已经上线;二是起消息的转发作用,所有的客户聊天信息都有服务器来转发。

1.1.2环境需求运行环境:Windows xp、eclipse必要环境:JDK 1.5 以上1.2实现目标(1)登录界面,好友列表界面,聊天界面。

(2)当用户点击登录后,把QQ号码和密码发送给QqServer去验证,如果该用户合法,则返回ok,反之返回Err。

(3)完成多个好友互相聊天功能。

(4)如果好友在线,则显示彩色头像,反之,显示灰色头像。

(5)当好友上线后,提示。

(6)把接收到的消息,显示到该显示聊天界面。

(7)当一个用户上线是能看到所有的在线好友,用户可以群聊也可以选择某个人单独聊天。

2 系统设计2.1模型分析客户端:建立与服务器的连接并登陆,能显示登陆错误信息,完成界面登录。

并在每次用户接收到聊天信息后将会开始分析聊天信息,然后将适合自己的信息人性化地显示在与好友聊天界面上。

服务器:检查登陆信息是否正确,并向客户端返回登陆信息。

如信息正确,就将用户发送给该用户。

可以将聊天信息,转发给消息指定的客户端。

整体模型如图1所示。

图1整体通信模型2.2流程分析(1)服务器端:运行服务器程序(2)客户端:进入登陆界面,输入QQ号码和密码,点登录按扭。

java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)

java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)

又有好多天没有写博客了,最近有网友问我,在java web中如何实现像QQ登录的功能,同一帐号不能同时在两台电脑上登录。

一、该功能有什么作用大家想想吧。

反正总会有这样的需求的。

这年头什么需求不会有。

呵呵。

有时候也不一定是需求,很有可能为了安全也会这么做。

例如考试系统,在线聊天系统,很有必要做成这样的吧。

二、实现过程a.问题分析在系统中,我们一般都是把登录信息绑定到session中,看来从这入手是可能找到解决办法。

说白了,也就是当用户登录时,判断一下这个用户有没有登录,如果登录了,就把以前的那个session清除掉就OK了。

看似很简单是不?其实你细想你会发现有以下问题:如何得到之前这个用户有没有登录过,也就是如何访问到所有登录的session信息呢?b.具体实现大家知道,在j2ee api好像是没有具体的方法直接得到所有session信息的。

但是我们可以通过配制监听器,监控所有的session创建和消毁过程,以及可以监控session 中的属性的创建,删除和替换过程。

其实我们只要做以下处理即可:在保存用户登录信息到session时,对应的也就是session一个属性的创建过程(attributeAdded),可以把当前这个session记录到一个ArrayList中。

其实在保存到list中时你要首先遍历一下这个list中有没有已经存在该用户的登录信息。

如果存在就消毁掉这个list中存在的session信息,并且从list中移除,不存在就把该session信息放到list中。

在session的登录信息消毁时,直接把该sesseion从list中移除掉。

还有就是当用户登录后没有退出直接登录这个时候是一个session属性的替换过程。

也要做处理判断新的用户是否已经在除了当前session的其它session中是否存在。

存在则删除。

具体代码如下:package com.weirhp;import java.util.ArrayList;import java.util.Collections;import java.util.List;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class RecordSessionListener implements HttpSessionAttributeListener, HttpSessionListener {private static List<SessionAndUser> sessions;public static String loginFlag = "loginUser";static {if (sessions == null) {sessions = Collections.synchronizedList(new ArrayList<SessionAndUser>()); }}public void attributeAdded(HttpSessionBindingEvent e) {HttpSession session = e.getSession();System.out.println("-------------*start added*-----------------------"); String attrName = e.getName();// 登录if (attrName.equals(loginFlag)) {User nowUser = (User) e.getValue();User sUser = (User)session.getAttribute(loginFlag);// 遍历所有sessionfor (int i = sessions.size()-1; i >= 0; i--) {SessionAndUser tem = sessions.get(i);if (tem.getUserID().equals(nowUser.getName())) {tem.getSession().invalidate();//自动调用removebreak;}}SessionAndUser sau = new SessionAndUser();sau.setUserID(nowUser.getName());sau.setSession(session);sau.setSid(session.getId());sessions.add(sau);}}public void attributeRemoved(HttpSessionBindingEvent e) {HttpSession session = e.getSession();System.out.println("-------------*start Removed*-----------------------"); String attrName = e.getName();// 登录if (attrName.equals(loginFlag)) {User nowUser = (User) e.getValue();// 遍历所有sessionfor (int i = sessions.size()-1; i >= 0; i--) {SessionAndUser tem = sessions.get(i);if (tem.getUserID().equals(nowUser.getName())) {sessions.remove(i);break;}}}}public void attributeReplaced(HttpSessionBindingEvent e) {HttpSession session = e.getSession();System.out.println("-------------*start replace*-----------------------"); String attrName = e.getName();int delS=-1;// 登录if (attrName.equals(loginFlag)) {// User nowUser = (User) e.getValue();//old valueUser nowUser = (User)session.getAttribute(loginFlag);//当前session中的user // 遍历所有sessionfor (int i = sessions.size()-1; i >= 0; i--) {SessionAndUser tem = sessions.get(i);if(tem.getUserID().equals(nowUser.getName())&&!tem.getSid().equals(session.getId())) {System.out.println("Remove:invalidate 1!");delS=i;}else if(tem.getSid().equals(session.getId())){tem.setUserID(nowUser.getName());}}if (delS!=-1) {sessions.get(delS).getSession().invalidate();//失效时自动调用了remove方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以下是效果截图:
素材:
以下是源代码:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class QqClientLogin2 extends JFrame implements MouseListener{
//北部区域标签,放图片QQ2012
JLabel jlb;
//中部区域
JPanel jp;
JComboBox cb;//组合框设置状态用的
JLabel jp_jlb1,jp_jlb3,jp_jlb4; //标签"注册账号""找回密码"
JTextField jp_jtf; // QQ号码/手机/邮箱
JTextField jp_jtf; // QQ号码/手机/邮箱
TextField jp_pw; //密码
JCheckBox jp_jcb1,jp_jcb2;//复选框设置"记住密码""自动登录"
Font f1=new Font("宋体", Font.PLAIN, 14); //设置字体
JButton jp_jb1,jp_jb2,jp_jb3;//按钮设置登陆等
public static void main(String[] args) {
QqClientLogin2 acl=new QqClientLogin2();
}
public QqClientLogin2() {
jlb=new JLabel(new ImageIcon("image/tou.gif")); //图片路径可要根据你放置的位置修改不然显示不出来若是和文件放同一个地方则image/ 可以去掉
jp=new JPanel();
jp.setLayout(null);
jp_jlb1=new JLabel(new ImageIcon("image/qqtou.gif"));
jp_jlb1.setBounds(18, 10, 85, 85); //设置标签位置前提是要空布局
jp_jtf=new JTextField("QQ号码/手机/邮箱");
jp_jtf.setForeground(Color.LIGHT_GRAY);//设置颜色
jp_jtf.addMouseListener(this);
jp_jtf.setBounds(118, 11, 170, 25);
jp_pw=new TextField("密码",24);
jp_pw.setForeground(Color.LIGHT_GRAY);
jp_pw.addMouseListener(this);
jp_pw.setBounds(118, 45, 170, 24);
jp_jlb3=new JLabel("注册账号");
jp_jlb3.setFont(f1);
jp_jlb3.setForeground(Color.BLUE);
jp_jlb3.setBounds(300, 10, 70, 25);
jp_jlb4=new JLabel("找回密码");
jp_jlb4.setFont(f1);//设置"找回密码"字体
jp_jlb4.setForeground(Color.BLUE); //设置"找回密码"字体颜色
jp_jlb4.setBounds(300, 43, 70, 25);
String[] s={"在线","隐身","忙碌","离线"}; //设置状态
cb=new JComboBox(s);
cb.setFont(f1);
cb.setBounds(300, 78, 60, 21);
jp_jcb1=new JCheckBox("记住密码");
jp_jcb1.setFont(f1);
jp_jcb1.setBounds(114, 78, 90, 20);
jp_jcb2=new JCheckBox("自动登录");
jp_jcb2.setFont(f1);
jp_jcb2.setBounds(206, 78, 90, 20);
jp_jb1=new JButton("多账号");
jp_jb1.setFont(f1);
jp_jb1.setBounds(10, 120, 76, 21);
jp_jb2=new JButton("设置");
jp_jb2.setFont(f1);
jp_jb2.setBounds(95, 120, 65, 21);
jp_jb3=new JButton("登录");
jp_jb3.setFont(f1);
jp_jb3.setBounds(297, 120, 65, 21);
//添加各个组件
jp.add(jp_jlb1);
jp.add(jp_jtf);
jp.add(jp_jlb4);
jp.add(jp_pw);
jp.add(jp_jlb3);
jp.add(cb);
jp.add(jp_jcb1);
jp.add(jp_jcb2);
jp.add(jp_jb1);
jp.add(jp_jb2);
jp.add(jp_jb3);
this.add(jlb,"North");//标签放到最北部
this.add(jp,BorderLayout.CENTER);// 放到中部
this.setIconImage(new
ImageIcon("image/qq.gif").getImage());//设置窗口上的qq小图片this.setResizable(false);//不允许放大,改变窗口大小等
this.setSize(380,275);
this.setLocation(500,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jp_jtf)
{
jp_jtf.setText("");
jp_jtf.setForeground(Color.BLACK);
}
else if(e.getSource()==jp_pw)
{
jp_pw.setText("");
jp_pw.setForeground(Color.BLACK);
jp_pw.setEchoChar('●');
}
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}。

相关文档
最新文档