java Swing QQ登陆界面

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

先说一下思想:

由JFrame和多个JPanel组成,

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

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

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

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

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

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

下面用图片对比一下:

java Swing QQ登陆界面_第1张图片

这个是添加登录界面

java Swing QQ登陆界面_第2张图片

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

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

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原来的界面漂亮!

源码地址:源码


你可能感兴趣的:(java,swing,qq)