⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twopanel.java.bak

📁 用JAVA写个一个烟花效果
💻 BAK
字号:
package FireFlower;
 //设置第二个面板,返回一个JPanel,减少依赖性 


import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;


public class TwoPanel extends JPanel  implements ActionListener{
final  private  	FireFlower ff;
private	JButton[]    jb=new  JButton[4];
final   private	DotFactory   df=new  DotFactory();
final  	AutoThread   at=new  AutoThread();
private	boolean     judge1=true;
private	boolean     judge2=false;
final private   	Font  font=new Font("",Font.BOLD,14);

  //TPThread  tpTH=new TPThread();
//  Object  obj=new Object();
	public  TwoPanel(FireFlower ff){
		  this.ff=ff;
		  
		 JLabel  jl=new JLabel("自动演示:",JLabel.CENTER);
		 jl.setFont(font);
    	 String[]  name={"开始","暂停","停止","退出"};
 
    	 setLayout(new  GridLayout(1,5));
    	 add(jl);
    	 for(int i=0;i<jb.length;i++){
    		 jb[i]=new JButton(name[i]);
    		 jb[i].setActionCommand(name[i]);
    		 add(jb[i]);
    		 jb[i].addActionListener(this);
    		 jb[i].setFont(font);
    	 }
    	
    	 jb[1].setEnabled(false);
    	 jb[2].setEnabled(false);
 	 
    	 setBorder(new LineBorder(Color.pink,3));
 
		
	}
	
	/*
	 * 本来是打算新建一个线程来处理按钮被点击得,这样
	 * 就按钮就不用等待它响应源得事件执行完才释放资源
	 * 可以提高响应性,但是按钮本身得事件占用时间不长,
	 * 所以没用这个线程,把代码留下注释,方便以后启用
	 * 
	class   TPThread extends Thread{
		AWTEvent e=null;
		
		public TPThread(){}
		
		public  TPThread(AWTEvent e){
			this.e=e;
		}
		
		public void setEvent(AWTEvent e){
			this.e=e;
		}
		
		public   void run(){
			
				reaction();
				
		}
		
		public  void  reaction(){
			 ActionEvent e=(ActionEvent)this.e; 
			if(e.getActionCommand().equals("退出")){
				try{
	              ff.mt.myJudge=false;
				  ff.mt.join();
				}catch(Exception ee){}
				System.exit(0);
			}
			
			
			else  if(e.getActionCommand().equals("开始")){
				
				jb[0].setEnabled(false);
				jb[1].setEnabled(true);
				jb[2].setEnabled(true);
				
				if(!judge2){
				//	if(!at.isAlive()){at.start();}
					judge1=true;
					judge2=true;
					ff.mt.judge=true;
				}
				
			}
			
	        else  if(e.getActionCommand().equals("暂停")){
	        	judge2=false;
	        	jb[0].setEnabled(true);
	        	jb[1].setEnabled(false);

	        	ff.mt.judge=false;
	        	autoPaint();
			}
			
	        else  if(e.getActionCommand().equals("停止")){
	        	judge1=false;
	        	judge2=false;
	        	ff.mt.judge=true;
	        	jb[0].setEnabled(true);
	        	jb[1].setEnabled(false);
	        	jb[2].setEnabled(false);
			}
			
			
		}
	}
	*/
	public  void actionPerformed(ActionEvent e){
		
		
		if(e.getActionCommand().equals("退出")){
			try{
              ff.mt.myJudge=false;
			  ff.mt.join();
			}catch(Exception ee){}
			System.exit(0);
		}
		
		
		else  if(e.getActionCommand().equals("开始")){
			
			jb[0].setEnabled(false);
			jb[1].setEnabled(true);
			jb[2].setEnabled(true);
			
			if(!judge2){
			//	if(!at.isAlive()){at.start();}
				judge1=true;
				judge2=true;
				ff.mt.judge=true;
			}
			
		}
		
        else  if(e.getActionCommand().equals("暂停")){
        	judge2=false;
        	jb[0].setEnabled(true);
        	jb[1].setEnabled(false);

        	ff.mt.judge=false;
        	autoPaint();
		}
		
        else  if(e.getActionCommand().equals("停止")){
        	judge1=false;
        	judge2=false;
        	ff.mt.judge=true;
        	jb[0].setEnabled(true);
        	jb[1].setEnabled(false);
        	jb[2].setEnabled(false);
		}
		
	  
	}
	
	public  void autoPaint(){
		 ff.repaint();
	}
	
	
	
	class   AutoThread  extends Thread{
		
		public  void run(){
			
			int  x=ff.getWidth();
			int  y=ff.getHeight();
			
			 Dot  dot=null;
			while(true){
			 while(judge1){//控制停止
				 if(judge2){//控制暂停
			 int  rand=(int)(Math.random()*99); 
			 
			 int  x1=0;
			 int  y1=0;
			 
			    x1=(int)(Math.random()*x);
			    y1=(int)(Math.random()*y);
			 
			    if(x1==0&&y1==0){
			    	x1=(int)(Math.random()*400);
			    	y1=(int)(Math.random()*400);
			    }

			 dot=df.makeDot(rand,x1,y1);
			 
			 synchronized(ff.mm.lList){
			  ff.mm.lList.add(dot);
    	      ff.mc.beginDraw(ff.mm.lList);
			 }
    	     
		       try{
		       Thread.sleep((int)(Math.random()*15+1)*100);
		       }catch(Exception e){}
			 }//if
			 }//外层while
			}
		}
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -