java Swing QQ登陆界面

这几天写了一个QQ登录界面,本来想做到高仿的,但是现在得做Kinect项目,无奈这个就得放一放了,但是现在这里做个记录

先说一下思想:

由JFrame和多个JPanel组成,

1.界面要重新修整,主要用setUndecorated(true);去除除窗体,然后加上拖动窗体的方法;

setAlwaysOnTop(true);方法让界面悬浮

设置背景,通过判断时间来选择不同的图片做背景

2.JPanel上要实现组件上不同图片改变问题

在这里用MouseListener实现,主要用到三个事件,mousePressed,mouseEntered,mouseExited,也就是在触发这三个事件时

组件要通过setIcon方法转换不同的图片,所以每个组件都要准备三张(至少两张)图片,

下面用图片对比一下:


这个是添加登录界面


现在界面上还有没解决的问题就是那两个输入框,也求大神指点

在这里小说一下拖动窗体的方法  感觉这个比较重要(写一个类说明):

package QQLoginUI;

import java.awt.Cursor;
import java.awt.Point;
import java.awt.event.*;

import javax.swing.*;

@SuppressWarnings("serial")
public class SetFrame extends JFrame{

	private Boolean isMove;
	private Point loc,now;
	
	public SetFrame(){
		setSetFrame();
	}
	public void setSetFrame(){
		this.setSize(380,290);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setLayout(null);
		this.setUndecorated(true);
		this.setAlwaysOnTop(true);
		setMoved();
		
		
		this.setVisible(true);
	}
	/*
	 * 拖动窗体方法
	 */
	private void setMoved(){
		SetFrame.this.addMouseListener(new MouseAdapter() {
			public void mouseReleased(MouseEvent e) {
				isMove = false;
				SetFrame.this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
			public void mousePressed(MouseEvent e) {
				loc = new Point(e.getX(), e.getY());//获取窗体位置
				isMove = true;
				SetFrame.this.setCursor(new Cursor(Cursor.MOVE_CURSOR));
			}
		});
		SetFrame.this.addMouseMotionListener(new MouseAdapter() {
			public void mouseDragged(MouseEvent e) {
				if(isMove){
					now = new Point(SetFrame.this.getLocation().x+e.getX()
							-loc.x,SetFrame.this.getLocation().y+e.getY()
							-loc.y);
					SetFrame.this.setLocation(now);
				}
			}
		});
	}
	
	
	public static void main(String[] args) {
		new  SetFrame();
	}
}

这个类只需加上图片和界面最小化、关闭事件就行了  比swing原来的界面漂亮!

源码地址:源码


  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值