admin管理员组文章数量:1646328
这几天写了一个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原来的界面漂亮!
源码地址:源码
版权声明:本文标题:java Swing QQ登陆界面 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729447011a1201500.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论