奇幻圖像總結--Slider控制顏色,三基色

核心,傳遞參數---構造方法

        不同的監聽器相互間傳遞參數

        用到的方法,SLider中的setValue,設置初始值,getValue得到Slider當前數值

       顯現SLider用法與加監聽器

 

 

package netjava;

import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JSlider;

public class Draw02 extends JFrame {
//	private JSlider sl;
	public static	void main(String[] args){
		Draw02 dr=new Draw02();
		dr.initUI();
	}
	//定義初始界面方法
	public void initUI(){
		JFrame jf=new JFrame();
		jf.setTitle("王板");
		JSlider sl01=new JSlider();
		sl01.setMaximum(255);
		sl01.setValue(0);
		JSlider sl02=new JSlider();
		sl02.setMaximum(255);
		sl02.setValue(0);
		JSlider sl03=new JSlider();
		sl03.setMaximum(255);
		sl03.setValue(100);
		jf.add(sl01);
		jf.add(sl02);
		jf.add(sl03);
		jf.setDefaultCloseOperation(3);
		jf.setLocation(100,100);
		jf.setSize(600,600);
		jf.setLayout(new FlowLayout());
		JButton bu=new JButton("技術");
		jf.add(bu);
		jf.setVisible(true);
		//在畫板顯示之後取得窗體的畫布對象
		Graphics g=jf.getGraphics();
		//實例化處理累對象
		ButtonListener dl=new ButtonListener(sl01,sl02,sl03,g);
//		DrawListener dl=new DrawListener(g);
		//加監聽器
	//	bu.addActionListener(dl);
//		Recur dl=new Recur(g);
		SliderListener sListener = new SliderListener(sl01,sl02,sl03,dl);
		sl01.addChangeListener(sListener);
		sl02.addChangeListener(sListener);
		sl03.addChangeListener(sListener);
		
		
		jf.addMouseListener(dl);
		
		
	}

}

package netjava;

import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderListener implements ChangeListener {
	private JSlider sl01;
	private JSlider sl02;
	private JSlider sl03;
	private ButtonListener dl;
	private int value01;
	private int value02;
	private int value03;
	
	public SliderListener(JSlider sl01, JSlider sl02, JSlider sl03,ButtonListener dl) {
		this.sl01= sl01;
		this.sl02= sl02;
		this.sl03= sl03;
		this.dl = dl;
	}

	public void stateChanged(ChangeEvent e){
//		Draw02 draw=new Draw02(sl01);
//		int a=sl01.getValue();
//		int b=
		if(e.getSource()==this.sl01){
			
			 value01 =this.sl01.getValue(); 
			
			System.out.println("hahaa");
		}
		if(e.getSource()==this.sl02){
			 value02=this.sl02.getValue(); 
		}
		if(e.getSource()==this.sl03){
			 value03=this.sl03.getValue(); 
			 
		}
		dl.compute(value01, value02, value03);
		
	}

}
package netjava;

import java.awt.Color;
import java.awt.Graphics;
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JSlider;

public class ButtonListener extends MouseAdapter /*implements ActionListener */{

	private Graphics g;
	double a=1,b=4,c=60;
	private JSlider sl01;
	private JSlider sl02;
	private JSlider sl03;
	 public void mouseClicked(MouseEvent e) {
		
		 compute(this.sl01.getValue(),this.sl02.getValue(),this.sl03.getValue());
		}
//	}
//	}
	 
	public ButtonListener(JSlider sl01, JSlider sl02, JSlider sl03,Graphics g){
		this.g=g;
		this.sl01= sl01;
		this.sl02= sl02;
		this.sl03= sl03;
		
	}
	public void compute(int value01,int value02,int value03){
		 double x=0.0;
		 double y = 0.0;
		for(int i=0;i<50000;i++){
//			int j=255;
//			while(j>0){
//			Color co=new Color(j,j,j);
//			g.setColor(co);
		
//			double x2=d*Math.sin(a*x)-Math.sin(b*y);
//			double y2=c*Math.cos(a*x)+Math.cos(b*y);
	
			double x2=y-Math.signum(x)*Math.sqrt(Math.abs(b*x-c));
			double y2=a-x;
			int x3=(int)(1*x2);
			int y3=(int)(1*y2);
			g.setColor(new Color(value01,value02,value03));
			g.drawLine(x3+600, y3+400, x3+600, y3+400);
			x=x2;
			y=y2;
	}
	
	}
}
	



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章