博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Swing搭建QQ登录界面
阅读量:3968 次
发布时间:2019-05-24

本文共 5592 字,大约阅读时间需要 18 分钟。

目录



主界面架构

  用java swing 搭建图形界面已经极不实用,swing框架搭建的GUI界面局限性很高,它需要配套的jre环境才能运行,搭建的界面也并不美观。但对于初学者来讲,学习swing有助于了解MVC架构与监听器的使用,有些学校也会以java swing设置考核。

作为一个登录界面界面它主要的组件与功能

 

组件 类型 功能
登录按钮 JButton 链接监听器实现登录功能
标签 JLable 包括图片标签与文字标签等
复选按钮 JCheckBox 细化登录操作
输入框 TextFiled 输入账号
密码框 PasswordFiled 输入密码

面板

添加各种组件的容器就是面板,一般窗口被划分为多个部分为需要使用面板,这里我建立了三个面板添加不同组件


public LoadFrame(){ //        LoadFrame frame=new LoadFrame();         //新建容器         Container container=this.getContentPane();         //设置空布局         container.setLayout(null);         //添加两个新的面板         //上半部分静态面板         JPanel staticpanel=new JPanel();         staticpanel.setBounds(0,0,430,65);         //中间面板         JPanel centerpanel=new JPanel();         centerpanel.setBounds(0,65,430,80);         //下半部分输入面板         JPanel textpanel=new JPanel();         textpanel.setBounds(0,145,430,185);    }
   

登录按钮

新建单独的按钮类,主函数中面板添加按钮时会调用它的setBounds设置按钮在当前面板中的位置


 

import javax.swing.*; import java.awt.*; import java.net.URL; ​ public class SignInButton extends JButton {     public SignInButton(String title){         super(title);         this.setBounds(125,110,200,30);         this.setBackground(new Color(22, 221, 238));         this.setVisible(true);     } }

输入框

这里的输入框与密码框都是用TextFiled类来实现的,PasswFiled类与它的不同在于PasswFiled类可以自动将输入的数据转化为'*',TextFiled类通过调用setEchoChar方法也可以自定义它所显示的字符;

在输入框中,我将输入框及它的图标标签与文字标签都封装于一个面板中


import javax.swing.*; import java.awt.*; import java.net.URL; ​ public class inPutText extends JFrame {     //账号输入     public JPanel Userinput(){ ​         JPanel panel=new JPanel();         TextField field = new TextField(10);         JLabel label=new JLabel("账号");         URL uRl=inPutText.class.getResource("Source/qq.png");         ImageIcon icon=new ImageIcon(uRl);         JLabel label1 = new JLabel(icon);         panel.setBounds(144,20,142,25);         label1.setBounds(0,0,12,25);         label.setBounds(12,0,26,25);         field.setBounds(38,0,104,25);         panel.setLayout(null);         panel.add(label1);         panel.add(label);         panel.add(field); ​         return panel;     }     //密码输入     public JPanel PassInput(){         JPanel panel=new JPanel();         TextField field = new TextField();         field.setEchoChar('*');         JLabel label=new JLabel("密码");         URL uRl=inPutText.class.getResource("Source/pass.png");         ImageIcon icon=new ImageIcon(uRl);         JLabel label1 = new JLabel(icon);         panel.setBounds(144,50,142,25);         label1.setBounds(0,0,12,25);         label.setBounds(12,0,26,25);         field.setBounds(38,0,104,25);         panel.setLayout(null);         panel.add(label1);         panel.add(label);         panel.add(field);         return panel;     }

主函数

主函数中其他组件并没有被单独封装到类中,而是在LoadFrame中实现


除此之外还有建立图标所用的图片,他们被放置在相同目录的Source包中

他可以通过当前类.class.getResource()获取路径

 import javax.swing.*; import java.awt.*; import java.net.URL; import java.security.cert.LDAPCertStoreParameters; ​ public class LoadFrame extends JFrame {     //获取当前屏幕尺寸     Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize();     private int width=430;     private int height=330;     private int x=(scrSize.width-width)/2;     private int y=(scrSize.height-height)/2;     public LoadFrame(){ //        LoadFrame frame=new LoadFrame();         //新建容器         Container container=this.getContentPane();         URL url = LoadFrame.class.getResource("Source/qqicon.png");         ImageIcon icon=new ImageIcon(url);         JLabel jl=new JLabel("");         jl.setIcon(icon); ​         jl.setSize(icon.getIconWidth(),icon.getIconHeight());         container.setLayout(null);         //添加两个新的面板         //上半部分静态面板         JPanel staticpanel=new JPanel();         staticpanel.setBounds(0,0,430,65);         //中间面板         JPanel centerpanel=new JPanel();         centerpanel.setBounds(0,65,430,80);         //下半部分输入面板         JPanel textpanel=new JPanel();         textpanel.setBounds(0,145,430,185); ​ ​ ​         staticpanel.setBackground(new Color(31, 176, 201, 220));         centerpanel.setBackground(new Color(87, 216, 238, 220));         textpanel.setBackground(new Color(154, 222, 234, 220));         //添加头像 //        jl.setSize(icon.getIconWidth(),icon.getIconHeight());         textpanel.setLayout(null);         //添加登录按钮         SignInButton button = new SignInButton("登录");         textpanel.add(button);         centerpanel.add(jl);         jl.setHorizontalAlignment(SwingConstants.CENTER); //        MyIcon myIcon = new MyIcon();         //添加账号输入框         inPutText text = new inPutText();         textpanel.add(text.Userinput());         //添加密码输入框         inPutText text1 = new inPutText();         textpanel.add(text1.PassInput());         //添加复选按钮         JCheckBox checkBox01 = new JCheckBox("自动登录");         JCheckBox checkBox02 = new JCheckBox("记住密码");         checkBox01.setBounds(95,80,80,15);         checkBox02.setBounds(175,80,80,15); ​         //添加标签         JLabel label01 = new JLabel("忘记密码");         JLabel label02 = new JLabel("注册账号");         label01.setBounds(275,80,80,15);         label02.setBounds(50,120,80,15);         textpanel.add(checkBox01);         textpanel.add(checkBox02);         textpanel.add(label01);         textpanel.add(label02);         //将面板添加到容器         container.add(centerpanel);         container.add(staticpanel);         container.add(textpanel);         this.setBounds(x,y,width,height);         this.setVisible(true);         this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);     }     public void Init(){     }     public static void main(String[] args) {         LoadFrame frame = new LoadFrame();     } }

界面图

 

qqFrame

 

转载地址:http://ffcki.baihongyu.com/

你可能感兴趣的文章
工作队列的初始化(INIT_WORK的参…
查看>>
sysfs and /proc/bus/usb/device
查看>>
linux工作队列(转)
查看>>
跟我一起写udev规则(译)
查看>>
sysfs and /proc/bus/usb/device
查看>>
跟我一起写udev规则(译)
查看>>
USB和sysfs文件系统
查看>>
USB和sysfs文件系统
查看>>
udev(八):实战:使用udevadm修…
查看>>
android开发环境搭建(for 驱动开发…
查看>>
android开发环境搭建(for 驱动开发…
查看>>
android驱动例子(LED灯控制)
查看>>
为Android内核添加新驱动,并添加…
查看>>
Android Permission中英对照
查看>>
Android Permission中英对照
查看>>
[转]Android下编译自己的库文件jar…
查看>>
[转]Android下编译自己的库文件jar…
查看>>
使用Android隐藏类和隐藏方法
查看>>
使用Android隐藏类和隐藏方法
查看>>
使用Android隐藏类和隐藏方法
查看>>