`

swing编程实现闪屏登录效果

    博客分类:
  • Java
 
阅读更多
1、先写一个闪屏类
package com.mhl.Tools;
import java.awt.*;
import javax.swing.*;
//开发一个闪屏类 

public class paint extends JPanel implements Runnable 

{ 

  Thread t; 

  int x=10; 

  int i=0,j=40,u=10; 
//
  String gg[]={"系","统","正","在","加","载","请","稍","后"}; 

  int k=0,tt=0; 

  String shi[]={"满","汉","楼","融","满","汉","精","华","做","天","下","美","味", 

          "招","八","方","食","客","结","四","海","良","朋","|","满","汉","楼","工","作","室"}; 

  Font f=new Font("隶书",Font.PLAIN,18); 

   

  boolean ifok=true; 

  int width=180; 

  int height=0; 

  int dian=0; 

   

 public  paint() 

  { 

      t=new Thread(this); 

      t.start(); 

  } 

   

  @Override 

  public void run() { 

      while(true) 

      { 

          if(x<=380) repaint(); 

          try { 

              Thread.sleep(100); 

              i++; 

              j=j-6; 

              u=u+10; 

               

              if(tt==3) width=width-20; 

              if(i==4) 

              { 

                  tt++; 

                  if(ifok&&x>120+k*20) k++; 

                  if(k>=gg.length-1) ifok=false; 

                  x=x+10; 

                  i=0; 

                  j=40; 

                  u=10; 

                  dian++; 

                  if(dian>3) dian=0; 

              } 

          } catch (InterruptedException e) { 

              System.out.println("线程中断"); 

              e.printStackTrace(); 

          } 

      } 

  } 

   

  public void paintComponent(Graphics g) 

  { 

      Image image; 

      image=Toolkit.getDefaultToolkit().getImage("Images/index/index.gif"); 

      g.drawImage(image, 0, 0, this.getWidth(), 200, this); 

       

      int r=(int)(Math.random()*255); 

      int b=(int)(Math.random()*255); 

      int y=(int)(Math.random()*255); 

       

      g.setColor(new Color(253,250,250)); 

      g.fillRect(x, 210, 390-x, 30); 

      g.setColor(new Color(253,250,250)); 

      if(i>1) g.fillRect(x, 225-(j+20)/2, 10, j+20); 

      if(j>25) g.setColor(new Color(r,b,y)); 

      else g.setColor(new Color(123,194,252)); 

      g.fillRect(x, 225-j/2, 10, j); 

      g.setColor(new Color(123,194,252)); 

      g.drawRect(10, 210, 380, 30); 

       

      if(x<120) 

      { 

          for(int l=0;l<gg.length;l++) 

          { 

              g.setColor(new Color(0,0,0)); 

              g.drawString(gg[l],120+l*20,230); 

          } 

          for(int l=0;l<dian;l++) 

          { 

              g.setColor(new Color(0,0,0)); 

              g.drawString("*", 300+l*10, 235); 

          } 

          g.drawString("*", 300+10*dian, 235); 

      } 

      else 

      { 

          g.setColor(new Color(23,23,230)); 

          g.drawString(gg[k],120+k*20,230); 

          for(int l=k+1;l<gg.length;l++) 

          { 

              g.setColor(new Color(0,0,0)); 

              g.drawString(gg[l],120+l*20,230); 

          } 

          if(x>300+dian*10) 

              g.setColor(new Color(23,23,230)); 

          for(int l=0;l<dian;l++) 

          { 

              g.drawString("*", 300+l*10, 235); 

          } 

          g.drawString("*",300+10*dian,235); 

      } 

       

      //-----------逐字写诗 

      if(tt<3) 

      { 

          for(int rr=0;rr<=tt;rr++) 

          { 

              g.setColor(new Color(r,b,y)); 

              g.drawString(shi[rr], 170, 60+rr*20); 

          } 

          g.drawString(shi[tt], 170, 60+tt*20); 

      } 

      if(tt>=3&&tt<7) 

      { 

          g.setColor(new Color(230,0,0)); 

          for(int rr=0;rr<3;rr++) 

              g.drawString(shi[rr], 170, 60+rr*20); 

          g.setColor(new Color(r,b,y)); 

          if(tt<8) 

              for(int rr=3;rr<=tt;rr++) 

                  g.drawString(shi[rr], 150, rr*20-20); 

          if(tt>=7) 

          { 

              for(int rr=3;rr<=7;rr++) 

                  g.drawString(shi[rr], 150, rr*20-20); 

          } 

      } 

      if(tt>=7&&tt<13) 

      { 

          g.setColor(new Color(230,0,0)); 

          for(int rr=0;rr<3;rr++) 

              g.drawString(shi[rr], 170, 60+rr*20); 

          for(int rr=3;rr<=7;rr++) 

              g.drawString(shi[rr], 150, rr*20-20); 

          g.setColor(new Color(r,b,y)); 

          if(tt<13) for(int rr=8;rr<=tt;rr++) 

              g.drawString(shi[rr], 120, rr*20-120); 

          //减120,是因为此时rr不是5,而是在7~13之间,减去前面的5个*20,再减20,即减120 

          if(tt>=13) for(int rr=8;rr<=13;rr++) 

              g.drawString(shi[rr], 120, rr*20-120); 

      } 

      if(tt>=13&&tt<18) 

      { 

          g.setColor(new Color(230,0,0)); 

          for(int rr=0;rr<3;rr++) 

              g.drawString(shi[rr], 170, 60+rr*20); 

          for(int rr=3;rr<=7;rr++) 

              g.drawString(shi[rr], 150, rr*20-20); 

          for(int rr=8;rr<13;rr++) 

              g.drawString(shi[rr], 120, rr*20-120); 

          g.setColor(new Color(r,b,y)); 

          if(tt<18) for(int rr=13;rr<=tt;rr++) 

              g.drawString(shi[rr], 90, rr*20-220); 

          if(tt>=18) for(int rr=13;rr<=18;rr++) 

              g.drawString(shi[rr], 90, rr*20-220); 

      } 

      if(tt>=18&&tt<23) 

      { 

          g.setColor(new Color(230,0,0)); 

          for(int rr=0;rr<3;rr++) 

              g.drawString(shi[rr], 170, 60+rr*20); 

          for(int rr=3;rr<=7;rr++) 

              g.drawString(shi[rr], 150, rr*20-20); 

          for(int rr=8;rr<13;rr++) 

              g.drawString(shi[rr], 120, rr*20-120); 

          for(int rr=13;rr<18;rr++) 

              g.drawString(shi[rr], 90, rr*20-220); 

          g.setColor(new Color(r,b,y)); 

          if(tt<23) for(int rr=18;rr<=tt;rr++) 

              g.drawString(shi[rr], 60, rr*20-320); 

          if(tt>=23) for(int rr=18;rr<=23;rr++) 

              g.drawString(shi[rr], 60, rr*20-320); 

      } 

      if(tt>=23&&tt<30) 

      { 

          g.setColor(new Color(230,0,0)); 

          for(int rr=0;rr<3;rr++) 

              g.drawString(shi[rr], 170, 60+rr*20); 

          for(int rr=3;rr<=7;rr++) 

              g.drawString(shi[rr], 150, rr*20-20); 

          for(int rr=8;rr<13;rr++) 

              g.drawString(shi[rr], 120, rr*20-120); 

          for(int rr=13;rr<18;rr++) 

              g.drawString(shi[rr], 90, rr*20-220); 

          for(int rr=18;rr<23;rr++) 

              g.drawString(shi[rr], 60, rr*20-320); 

          g.setColor(new Color(r,b,y)); 

          if(tt<30) for(int rr=23;rr<=tt;rr++) 

              g.drawString(shi[rr], 30, rr*20-400); 

          if(tt>=30) for(int rr=23;rr<=30;rr++) 

              g.drawString(shi[rr], 30, rr*20-400); 

      } 

      if(tt>=30) 

      { 

          g.setColor(new Color(230,0,0)); 

          for(int rr=0;rr<3;rr++) 

              g.drawString(shi[rr], 170, 60+rr*20); 

          for(int rr=3;rr<=7;rr++) 

              g.drawString(shi[rr], 150, rr*20-20); 

          for(int rr=8;rr<13;rr++) 

              g.drawString(shi[rr], 120, rr*20-120); 

          for(int rr=13;rr<18;rr++) 

              g.drawString(shi[rr], 90, rr*20-220); 

          for(int rr=18;rr<23;rr++) 

              g.drawString(shi[rr], 60, rr*20-320); 

          for(int rr=23;rr<30;rr++) 

              g.drawString(shi[rr], 30, rr*20-400); 

      } 

  } 

   

}

2、用户登陆窗口类
package com.mhl.View;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;


import com.mhl.Tools.*;
public class UserLogin extends JDialog implements ActionListener {

	/**
	 * @param args
	 */
	
	LoginBackImage bgimage=null; //背景图片
	paint p=null;  //闪屏
	
	 JLabel jb1,jb2,jb3;
	 JTextField juserName;
	 JPasswordField   jPwd;
	 
	 JButton jconfirm,jcancel;
	
	public static void main(String[] args) {
		
		UserLogin login=new UserLogin();
        
	}
	
  public UserLogin()
	{
		jb1=new JLabel("请输入用户编号:");
		jb1.setFont(myFont.f1);
		//设置jb1在容器中的位置和大小,注意:只有在空布局中才使用此设置
	    jb1.setBounds(60, 190, 150, 30);
		this.add(jb1);
		
		
		juserName=new JTextField();
		juserName.setBounds(180,190,120,30);
		//设置下凹
		juserName.setBorder(BorderFactory.createLoweredBevelBorder());
		this.add(juserName);
	
		jb2=new JLabel("(或员工号)");
		jb2.setFont(myFont.f4);
		jb2.setForeground(Color.red);
		jb2.setBounds(100,210,100,30);
		this.add(jb2);
		
	    jb3=new JLabel("用户密码:");
	    jb3.setBounds(60,240,150,30);
	    jb3.setFont(myFont.f1);
	    this.add(jb3);
	    
	    jPwd=new JPasswordField();
	    jPwd.setBounds(180,240,120,30);
		//设置边框下凹
	    jPwd.setBorder(BorderFactory.createLoweredBevelBorder());
	    this.add(jPwd);
	    
	    
	    jconfirm=new JButton("确定");
	    jconfirm.setBounds(105,300,75,30);
	    jconfirm.setFont(myFont.f1);
	    this.add(jconfirm);
	     
	    jcancel=new JButton("取消");
	    jcancel.setBounds(215,300,75,30);
	    jcancel.setFont(myFont.f1);
	    jcancel.addActionListener(this);
	    this.add(jcancel);
	     
	    
	    //空布局
		this.setLayout(null);
		this.setSize(360,360);
		
		//加背景图片
		bgimage=new LoginBackImage();
		bgimage.setBounds(0, 0, 360, 360);
		this.add(bgimage);
	
		//加闪屏效果
		p=new paint();
		this.add(p);
	    //取掉边框修饰效果
		this.setUndecorated(true);
		//窗体居中
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		
		
	}

@Override
public void actionPerformed(ActionEvent e) {
	
    if(e.getSource()==jconfirm)
    {
    	//todo
    }else if(e.getSource()==jcancel)
    {

    	System.exit(0);
    }
}
}
/*
 * 登陆截面的背景图片
 */
class LoginBackImage extends JPanel
{
	Image bg=null;
  	LoginBackImage()
	{
	  try {
		bg=ImageIO.read(new File("Images/login.gif"));
	} catch (IOException e) {
		
		e.printStackTrace();
	}
		
	}
  	public void paintComponent(Graphics g)
  	{
  		g.drawImage(bg, 0, 0,360,360,this);
  	}
}


3、实现闪屏登陆效果
package com.mhl.View;

import java.awt.*;
import javax.swing.*;


import com.mhl.Tools.*;
public class CataLog extends JWindow implements Runnable  {

	/**
	 * @param args
	 */
	
	paint p=null;
	public static void main(String[] args) {

		CataLog ct=new CataLog();
		Thread t=new Thread(ct);
		t.start();
	}
	
	
	public CataLog()
	{
		this.setSize(400,240);

		//加闪屏
		p=new paint();
		this.add(p);
		
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}


	@Override
	public void run() {

		while(true)
		{
			
			try {
				Thread.sleep(30*500); 
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			//启动登陆窗口
			new UserLogin();
			this.dispose();
		}
	}

}


4、登陆窗口类中用到的类型
package com.mhl.Tools;
import java.awt.*;
public class myFont {

  public static Font f0=new Font("宋体",Font.PLAIN, 18);
  public static Font f1=new Font("宋体",Font.PLAIN, 16);
  public static Font f2=new Font("宋体",Font.PLAIN,15);
  public static Font f3=new Font("宋体",Font.PLAIN,14);
  public static Font f4=new Font("宋体",Font.PLAIN,13);
}



分享到:
评论

相关推荐

    模仿Eclipse的闪屏

    【Eclipse 闪屏】是一种启动时展示的短暂动画效果,...通过精心设计和实现,你可以为你的应用打造一个既美观又能提升用户体验的闪屏效果。在实际开发中,可以根据具体平台和开发工具的特点进行调整,以达到最佳效果。

    满汉楼闪屏代码(韩顺平)

    在编程实现闪屏代码时,首先我们需要了解基本的UI框架,比如Java中的Swing或Android中的XML布局。在这个案例中,可能会用到Java Swing来创建一个简单的窗口,并添加相应的组件。Swing提供了一系列的JComponent类,如...

    在Java程序前添加一个闪屏

    在Java程序中添加一个闪屏(Splash Screen)是提高用户...通过合理的编程和适当的动画效果,你可以为用户提供一个优雅且专业的启动体验。在打包成JAR时,确保正确处理资源路径,以确保闪屏功能在目标环境中正常工作。

    java Swing中级编程

    本资源包含: 27彩色圆盘 28绘制2D图形 29变化的圆形 30动态画布 31有背景的表格 32拖拽和移动鼠标 33按下和松开鼠标 ...42快闪屏窗口 43文件对话框 44时钟 45三次贝塞尔曲线 46滚动的圆盘 47超链接事件

    韩顺平满汉楼餐饮系统部分功能实现

    【满汉楼餐饮系统部分功能实现】是一个基于Java编程语言的项目,主要涵盖了闪屏、登录界面、主界面以及人事管理系统等关键模块。这个系统旨在模拟真实的餐饮业管理流程,帮助用户进行日常运营,提高效率。 1. **...

    Java开发技术大全--光盘.rar

    7. **网络编程**:Java的Socket编程允许创建客户端和服务端应用程序,实现数据的网络传输。书中可能有TCP和UDP通信的实例。 8. **JavaFX和Swing**:对于图形用户界面(GUI)开发,Java提供了JavaFX和Swing库。源码...

    模仿QQ的制作

    1. **图形用户界面设计**:使用编程语言(如Python的Tkinter、Java的Swing或Android的XML布局)来创建用户友好的界面,实现抖动闪屏的效果。 2. **事件驱动编程**:理解和实现事件监听器,使用户界面能够响应用户的...

    双缓冲解决屏幕闪烁问题

    在实际编程中,不同的编程语言和框架提供了不同的实现方式。例如,在Java中,我们可以使用`BufferedImage`作为后台缓冲区,并通过`Graphics`对象在其中绘图;而在C#的WinForms或WPF中,我们可以利用`Control....

    java信息管理课程设计报告

    详细设计部分,如Paint类,用于创建闪屏效果,实现线程每隔半秒在面板上绘制文字。 综上所述,这个Java信息管理课程设计项目是一个全面的系统开发实践,涵盖了从需求分析、设计、编码到测试的完整软件开发流程,...

    JAVA核心技术卷II:高级特性

     关于Java基础知识的讨论,包括接口与内部类、使用Swing的GUI编程、异常处理.泛型.集合和并发。读者可以查阅《Java核心技术,卷I:基础知识(原书第8版)》(ISBN:978-7-111-23950-5)。  2006、2007年度CSDN、...

    Java五子棋游戏(完整项目,eclipse直接运行)

    总结起来,这个Java五子棋游戏项目涵盖了从基本的Java编程到高级的图形用户界面设计、游戏逻辑实现和资源管理等多个方面,为学习者提供了一个综合性的实践案例,有助于提升其在Java开发领域的技能。

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 43 实例033 使用while与自增运算符循环遍历 数组 43 ...

    Java核心技术II(第8版)

    第四章 数据库编程 4.1 JDBC的设计 4.1.1 JDBC驱动程序类型 4.1.2 JDBC的典型用法 4.2 结构化查询语言 4.3 JDBC配置 4.3.1 数据库URL 4.3.2 驱动程序JAR文件 4.3.3 启动数据库 4.3.4 注册驱动器类 4.3.5 连接到...

Global site tag (gtag.js) - Google Analytics