1.去掉原来的界面的装饰,改用自己装饰:
先看看效果,如下图
如何实现:
1.去掉原来的windows的装饰:
this.setSize(340, 256);
this.setUndecorated(true);
//虽然去掉了装饰,但是下面的界面图标与界面的标题是不可以去掉的,否则在桌面最下面的工具栏中会看不到标题与图标的。
URL url5 = this.getClass().getResource("/p_w_picpath/client_title.png");
this.setIconImage(new ImageIcon(url5).getImage());
this.setTitle("用户登录");
this.setLocation(new ScreenLocation(348,250).getLocation());
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setResizable(false);
2.移动界面的代码:
Point loc = null;
Point tmp = null;
boolean isDragged = false;
//拖动窗体的方法
private void setDragable() {
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
isDragged = false;
//当鼠标不拖动时,设置鼠标显示的样式
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void mousePressed(java.awt.event.MouseEvent e) {
tmp = new Point(e.getX(), e.getY());
isDragged = true;
//当鼠标点击时,鼠标显示的样式
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
//添加鼠标运动监听器
this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent e) {
if (isDragged) {
//重新设置界面的位置
loc = new Point(getLocation().x + e.getX() - tmp.x,
getLocation().y + e.getY() - tmp.y);
setLocation(loc);
}
}
});
}
3.添加界面最下化与关闭按钮:
//处理关闭窗口按钮
//com为界面的容器,exit为按钮JButton
com.add(exit);
exit.setBounds(300, 1, 37, 20);
exit.setBorder(null);
exit.setIcon(new ImageIcon(this.getClass().getResource("/p_w_picpath/login_exit.jpg")));
exit.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
exit.setIcon(new ImageIcon(this.getClass().getResource("/p_w_picpath/login_exit2.jpg")));
}
public void mouseExited(MouseEvent e) {
exit.setIcon(new ImageIcon(this.getClass().getResource("/p_w_picpath/login_exit.jpg")));
}
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 1){
System.exit(0);
}
}
});
//处理最小化窗口按钮
//com为界面的容器,minux为按钮JButton
com.add(minux);
minux.setBounds(272,1, 29, 20);
minux.setBorder(null);
minux.setIcon(new ImageIcon(this.getClass().getResource("/p_w_picpath/login_minux.jpg")));
minux.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
minux.setIcon(new ImageIcon(this.getClass().getResource("/p_w_picpath/login_minux2.jpg")));
}
public void mouseExited(MouseEvent e) {
minux.setIcon(new ImageIcon(this.getClass().getResource("/p_w_picpath/login_minux.jpg")));
}
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 1){
//从界面管理容器中取得主界面,然后最小化
FaceManager.getFace("login").setExtendedState(JFrame.ICONIFIED);
}
}
});
4.要实现界面为一张图片,主界面的布局要设置为null,然后用一个JLabel来放置背景图片。
URL url1 = this.getClass().getResource("/p_w_picpath/login.jpg");
background = new JLabel(new ImageIcon(url1));
Container com = this.getContentPane();
com.setLayout(null);
com.add(background);
background.setBounds(0, 0, 340, 256);
//下面是添加可以移动的方法
setDragable();
全部代码如下
publicclassClientLoginextendsJFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=1L;
publicstaticStringserverIp="127.0.0.1";
JLabelbackground,jl_uname,jl_psd,jl_ip;
JPanelcon,control;
JTextFieldusername,ipaddr;
JPasswordFieldpassword;
JButtonjb_login,jb_cannel,jb_regist;
JButtonexit=newJButton();
JButtonminux=newJButton();
Pointloc=null;
Pointtmp=null;
booleanisDragged=false;
//拖动窗体的方法
privatevoidsetDragable(){
this.addMouseListener(newjava.awt.event.MouseAdapter(){
publicvoidmouseReleased(java.awt.event.MouseEvente){
isDragged=false;
setCursor(newCursor(Cursor.DEFAULT_CURSOR));
}
publicvoidmousePressed(java.awt.event.MouseEvente){
tmp=newPoint(e.getX(),e.getY());
isDragged=true;
setCursor(newCursor(Cursor.DEFAULT_CURSOR));
}
});
this.addMouseMotionListener(newjava.awt.event.MouseMotionAdapter(){
publicvoidmouseDragged(java.awt.event.MouseEvente){
if(isDragged){
loc=newPoint(getLocation().x+e.getX()-tmp.x,
getLocation().y+e.getY()-tmp.y);
setLocation(loc);
}
}
});
}
//构造函数
publicClientLogin(){
FaceManager.addFace("login",this);
URLurl1=this.getClass().getResource("/p_w_picpath/login.jpg");
background=newJLabel(newImageIcon(url1));
con=newJPanel(null);
jl_uname=newJLabel("用户名:",JLabel.CENTER);
jl_psd=newJLabel("密码:",JLabel.CENTER);
username=newJTextField();
password=newJPasswordField();
jl_ip=newJLabel("服务IP:");
ipaddr=newJTextField(serverIp);
con.add(jl_uname);
con.add(username);
con.add(jl_psd);
con.add(password);
con.add(jl_ip);
con.add(ipaddr);
control=newJPanel();
//处理南部
URLurl2=this.getClass().getResource("/p_w_picpath/denglu.gif");
jb_login=newJButton(newImageIcon(url2));
jb_login.addActionListener(this);
URLurl3=this.getClass().getResource("/p_w_picpath/quxiao.gif");
jb_cannel=newJButton(newImageIcon(url3));
jb_cannel.addActionListener(this);
URLurl4=this.getClass().getResource("/p_w_picpath/xiangdao.gif");
jb_regist=newJButton(newImageIcon(url4));
jb_regist.addActionListener(this);
//control.setBackground(Color.pink);
Containercom=this.getContentPane();
com.setLayout(null);
com.add(jl_uname);
jl_uname.setBounds(50,120,50,20);
com.add(username);
username.setBounds(110,120,150,20);
com.add(jl_psd);
jl_psd.setBounds(50,155,50,20);
com.add(password);
password.setBounds(110,155,150,20);
com.add(jl_ip);
jl_ip.setBounds(50,190,50,20);
com.add(ipaddr);
ipaddr.setBounds(110,190,150,20);
com.add(jb_login);
jb_login.setBounds(40,225,66,20);
com.add(jb_cannel);
jb_cannel.setBounds(130,225,66,20);
com.add(jb_regist);
jb_regist.setBounds(220,225,66,20);
com.add(background);
background.setBounds(0,0,340,256);
setDragable();
//处理关闭窗口按钮
com.add(exit);
exit.setBounds(300,1,37,20);
exit.setBorder(null);
exit.setIcon(newImageIcon(this.getClass().getResource("/p_w_picpath/login_exit.jpg")));
exit.addMouseListener(newMouseAdapter(){
publicvoidmouseEntered(MouseEvente){
exit.setIcon(newImageIcon(this.getClass().getResource("/p_w_picpath/login_exit2.jpg")));
}
publicvoidmouseExited(MouseEvente){
exit.setIcon(newImageIcon(this.getClass().getResource("/p_w_picpath/login_exit.jpg")));
}
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==1){
System.exit(0);
}
}
});
//处理最小化窗口按钮
com.add(minux);
minux.setBounds(272,1,29,20);
minux.setBorder(null);
minux.setIcon(newImageIcon(this.getClass().getResource("/p_w_picpath/login_minux.jpg")));
minux.addMouseListener(newMouseAdapter(){
publicvoidmouseEntered(MouseEvente){
minux.setIcon(newImageIcon(this.getClass().getResource("/p_w_picpath/login_minux2.jpg")));
}
publicvoidmouseExited(MouseEvente){
minux.setIcon(newImageIcon(this.getClass().getResource("/p_w_picpath/login_minux.jpg")));
}
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==1){
FaceManager.getFace("login").setExtendedState(JFrame.ICONIFIED);
}
}
});
this.setUndecorated(true);
URLurl5=this.getClass().getResource("/p_w_picpath/client_title.png");
this.setIconImage(newImageIcon(url5).getImage());
this.setSize(340,256);
this.setTitle("用户登录");
this.setLocation(newScreenLocation(348,250).getLocation());
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setResizable(false);
}
//处理事件
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb_cannel){
//取消
username.setText("");
password.setText("");
ipaddr.setText("");
}elseif(e.getSource()==jb_login){
Stringip=ipaddr.getText().trim();
if(ip!=null&&ip.length()>0)
{
serverIp=ip;
}
Useru=newUser();
u.setUsername(username.getText().trim());
u.setPassword(newString(password.getPassword()));
u.setAction(1);
//检测用户
AlmClientUserqcu=newAlmClientUser();
intresult=qcu.checkUser(u);
if(1==result){
newClientFace(u.getUsername());
//关闭登陆页面
this.dispose();
}elseif(2==result){
JOptionPane.showMessageDialog(this,"连接服务器的ip错误,暂时无法连接,请稍后再试");
}elseif(3==result){
JOptionPane.showMessageDialog(this,"服务器暂时关闭,请稍后再试");
}elseif(4==result){
JOptionPane.showMessageDialog(this,"无法与服务器通信,请稍后再试");
}else{
JOptionPane.showMessageDialog(this,"用户名或密码错误");
}
}elseif(e.getSource()==jb_regist){
//注册
UserRegreg=newUserReg(this);
reg.setVisible(true);
}
}
}