import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.math.*;

//Author:H.Hakan GENÇ - 2001-2002 - Turkiye
//GSM: +905052610452, E-mail:hasanhakangenc@hotmail.com

public class Comparator extends Applet
{
	CizimAlani cizimAlani;
	Opamp opamp;
	KontrolPaneli kontrolPaneli;
	Panel panel;
	String zeminRenk, onRenk;
	
	public void init(){
		zeminRenk = getParameter("zeminrenk");
		onRenk = getParameter("onrenk");
		
		if ((zeminRenk == null) ||
			(onRenk == null))
		{
			zeminRenk = "f0f0f0";
			onRenk = "000000";
		}
		
		setBackground(stringToColor(zeminRenk));
		setForeground(stringToColor(onRenk));
		
		setLayout(new FlowLayout(FlowLayout.LEFT));
		
		panel = new Panel();
		panel.setLayout(new BorderLayout());
		
		cizimAlani = new CizimAlani(zeminRenk);
		opamp = new Opamp(zeminRenk);
		kontrolPaneli = new KontrolPaneli(zeminRenk, cizimAlani, opamp);
		
		panel.add(opamp,"North");
		panel.add(kontrolPaneli,"South");
		
		add(cizimAlani);
		add(panel);
	}
	
	private Color stringToColor(String paramDeger)
	{
		int red;
		int green;
		int blue;

		red = (Integer.decode("0x" + paramDeger.substring(0,2))).intValue();
		green = (Integer.decode("0x" + paramDeger.substring(2,4))).intValue();
		blue = (Integer.decode("0x" + paramDeger.substring(4,6))).intValue();

		return new Color(red,green,blue);
	}
}

class CizimAlani extends Canvas{
	double gerilim_sinus[] = new double[360];
	int gerilim_integer_sinus[] = new int[360];
	int yukseklik, genislik;
	int Vingenlik = 10, Vref = 0, Komgenlik = 10, V_arti, V_eksi;
	int referans = 16, eksen = 0;
	int komx, komx2, komy, cikis_genislik, artim=0, ikinci_baslangic, son;
	boolean eviren_evirmeyen = true, cikis = false;
	double pi;
	String baslik = new String("Geçiş Eğrisi");
	Font gecerliFont;
	Image ekranDisiResim;
	Graphics gBellek;
	public CizimAlani(String renk){
		setBackground(Color.decode("#"+renk));	
		pi = Math.PI;
		
		if(eviren_evirmeyen){
			V_arti = Vingenlik;
			V_eksi = Vref;
		}
		else if(!eviren_evirmeyen){
			V_arti = Vref;
			V_eksi = Vingenlik;
		}
		
		gerilim_integer_sinus[0]= 0;

	}
	
	public void guncelle(int Vingenlik, int Vref, int Komgenlik, boolean eviren_evirmeyen){
		this.Vingenlik = Vingenlik;
		this.Vref = Vref;
		this.Komgenlik = Komgenlik;
		this.eviren_evirmeyen = eviren_evirmeyen;
		
		if(eviren_evirmeyen){
			V_arti = Vingenlik;
			V_eksi = Vref;
		}
		else if(!eviren_evirmeyen){
			V_arti = Vref;
			V_eksi = Vingenlik;
		}
		
		repaint();
	}
	
	public void paint(Graphics g){
		yukseklik = this.getSize().height; 
		genislik = this.getSize().width;
		ekranDisiResim = createImage(genislik, yukseklik);
		gBellek = ekranDisiResim.getGraphics();
		FontMetrics fm = gBellek.getFontMetrics();
		gecerliFont = gBellek.getFont();
		
			while(!cikis && artim < 360){
				gerilim_sinus[artim]= Math.sin((pi/180)*artim)*(Vingenlik);
				gerilim_integer_sinus[artim]= (int)gerilim_sinus[artim];
				if((gerilim_integer_sinus[artim] - Vref) >= 0){
					komx = (int)(artim/2);
					cikis = true;
				}
				artim++;
			}
			artim = 0;
			cikis=false;
			while(!cikis && artim < 360){
				gerilim_sinus[artim]= Math.sin((pi/180)*artim)*(Vingenlik);
				gerilim_integer_sinus[artim]= (int)gerilim_sinus[artim];
				if(gerilim_integer_sinus[artim] == Vref){
					komx2 = (int)(artim/2);
					cikis = true;
				}
				if(Vref>=0){
					komx2 = 90 - komx;	
				}
				artim++;
			}
		
		artim = 0;
		cikis=false;
		
		if(eviren_evirmeyen) Komgenlik *=1;
		else if(!eviren_evirmeyen) Komgenlik *=-1;
		cikis_genislik = komx2-komx;
		
		/*ilk eksen çiziliyor*/
		gBellek.drawString("Vin(t) Volt",10,20);
		gBellek.drawString("zaman (s)",genislik-80,yukseklik/6+5);
		gBellek.drawLine(10,yukseklik/6+10,380,yukseklik/6+10);
		gBellek.drawLine(10,yukseklik/6+9,380,yukseklik/6+9);
		gBellek.drawLine(15,yukseklik*1/3,15,20);
		gBellek.drawLine(16,yukseklik*1/3,16,20);
		
		gBellek.drawLine(13,24,15,20);// dikey ok çiziliyor
		gBellek.drawLine(18,24,15,20);
		
		gBellek.drawLine(375, yukseklik/6+7, 380, yukseklik/6+10);// yatay ok çiziliyor
		gBellek.drawLine(375, yukseklik/6+12, 380, yukseklik/6+10);
		/*ilk eksen çizildi*/
		
		//komparator çıkışı çiziliyor

			if(Vref >= 0) ikinci_baslangic = komx+180;
			else if(Vref < 0) ikinci_baslangic = 270-cikis_genislik;
		
		gBellek.setColor(Color.decode("#007846"));
		gBellek.drawLine(referans+komx,yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx+cikis_genislik,yukseklik/2+10+(-Komgenlik)*3);
		gBellek.drawLine(referans+ikinci_baslangic, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx+180+cikis_genislik, yukseklik/2+10+(-Komgenlik)*3);
		
		gBellek.drawLine(referans,yukseklik/2+10+Komgenlik*3,
								 referans+komx,yukseklik/2+10+Komgenlik*3);
		gBellek.drawLine(referans+komx+cikis_genislik,yukseklik/2+10+Komgenlik*3,
								 referans+ikinci_baslangic,yukseklik/2+10+Komgenlik*3);
	
			if(180+ikinci_baslangic < 360) son = 180 + ikinci_baslangic;
			else if(180+ikinci_baslangic >= 360) son = 360;
	
		
		gBellek.drawLine(referans+komx+180+cikis_genislik,yukseklik/2+10+Komgenlik*3,
								 referans+son,yukseklik/2+10+Komgenlik*3);
		gBellek.drawLine(referans+son, yukseklik/2+10+(-Komgenlik)*3,
								 referans+360, yukseklik/2+10+(-Komgenlik)*3);
		
		gBellek.drawLine(referans+komx, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx, yukseklik/2+10+Komgenlik*3);
		gBellek.drawLine(referans+komx+cikis_genislik, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx+cikis_genislik, yukseklik/2+10+Komgenlik*3);
		gBellek.drawLine(referans+ikinci_baslangic, yukseklik/2+10+(-Komgenlik)*3,
								 referans+ikinci_baslangic, yukseklik/2+10+Komgenlik*3);
		gBellek.drawLine(referans+komx+180+cikis_genislik, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx+180+cikis_genislik, yukseklik/2+10+Komgenlik*3);
		gBellek.drawLine(referans+son, yukseklik/2+10+(-Komgenlik)*3,
								 referans+son, yukseklik/2+10+Komgenlik*3);
		
		gBellek.setColor(Color.lightGray);
		if(eviren_evirmeyen) Komgenlik *=1;
		else if(!eviren_evirmeyen) Komgenlik *=-1;
		gBellek.drawLine(referans+komx, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx, yukseklik/6+10+(-Vref)*3);
		gBellek.drawLine(referans+komx+cikis_genislik, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx+cikis_genislik, yukseklik/6+10+(-Vref)*3);
		gBellek.drawLine(referans+ikinci_baslangic, yukseklik/2+10+(-Komgenlik)*3,
								 referans+ikinci_baslangic, yukseklik/6+10+(-Vref)*3);
		gBellek.drawLine(referans+komx+180+cikis_genislik, yukseklik/2+10+(-Komgenlik)*3,
								 referans+komx+180+cikis_genislik, yukseklik/6+10+(-Vref)*3);
		gBellek.drawLine(referans+son, yukseklik/2+10+(-Komgenlik)*3,
								 referans+son, yukseklik/6+10+(-Vref)*3);
		
		gBellek.setColor(Color.black);
		/*ikinci eksen çiziliyor*/
		gBellek.drawString("Çıkış (V)",10,yukseklik*1/3 + 20);
		gBellek.drawString("zaman (s)",genislik-80,yukseklik/2+5);
		gBellek.drawLine(10,yukseklik/2+10,380,yukseklik/2+10);
		gBellek.drawLine(10,yukseklik/2+9,380,yukseklik/2+9);
		gBellek.drawLine(15,yukseklik*2/3,15,yukseklik*1/3 + 20);
		gBellek.drawLine(16,yukseklik*2/3,16,yukseklik*1/3 + 20);
		
		gBellek.drawLine(13,yukseklik*1/3 + 24,15,yukseklik*1/3 + 20);// dikey ok çiziliyor
		gBellek.drawLine(18,yukseklik*1/3 + 24,15,yukseklik*1/3 + 20);
		
		gBellek.drawLine(375, yukseklik/2+7, 380, yukseklik/2+10);// yatay ok çiziliyor
		gBellek.drawLine(375, yukseklik/2+12, 380, yukseklik/2+10);
		/*ikinci eksen çizildi*/
		
		/*üçüncü eksen çiziliyor*/
		gBellek.drawString("Vin",genislik-50,yukseklik*5/6);
		gBellek.drawString("Vo",genislik/2,yukseklik*2/3+20);
		gBellek.drawLine(50,yukseklik*5/6+10,genislik-50,yukseklik*5/6+10);
		gBellek.drawLine(50,yukseklik*5/6+9,genislik-50,yukseklik*5/6+9);
		gBellek.drawLine(genislik/2,yukseklik-5,genislik/2,yukseklik*2/3 + 20);
		gBellek.drawLine(genislik/2+1,yukseklik-5,genislik/2+1,yukseklik*2/3 + 20);
		
		gBellek.drawLine(genislik/2-2,yukseklik*2/3 + 24,genislik/2,yukseklik*2/3 + 20);// dikey ok çiziliyor
		gBellek.drawLine(genislik/2+3,yukseklik*2/3 + 24,genislik/2,yukseklik*2/3 + 20);
		
		gBellek.drawLine(genislik-55, yukseklik*5/6+7, genislik-50, yukseklik*5/6+10);// yatay ok çiziliyor
		gBellek.drawLine(genislik-55, yukseklik*5/6+12, genislik-50, yukseklik*5/6+10);
		
		gBellek.drawLine(50, yukseklik*5/6+10, 55, yukseklik*5/6+7);// yatay ok çiziliyor
		gBellek.drawLine(50, yukseklik*5/6+10, 55, yukseklik*5/6+12);
		/*üçüncü eksen çizildi*/
		
		//geçiş eğrisi çizdiriliyor
		gBellek.setColor(Color.red);
		gBellek.drawLine(genislik/2-(V_arti-V_eksi)*3,yukseklik*5/6+Komgenlik*3+10,
								 genislik/2+(V_arti-V_eksi)*3,yukseklik*5/6+(-Komgenlik)*3+10);
		if((eviren_evirmeyen && V_arti-V_eksi>=0) || (!eviren_evirmeyen && V_arti-V_eksi >= 0)) Vingenlik *= 1;
		else if((eviren_evirmeyen && V_arti-V_eksi<0) || (!eviren_evirmeyen && V_arti-V_eksi<0)) Vingenlik *=-1;
		
		gBellek.drawLine(genislik/2-(V_arti-V_eksi)*3,yukseklik*5/6+Komgenlik*3+10,
									 genislik/2-(V_arti-V_eksi)*3-(Vingenlik)*3,yukseklik*5/6+Komgenlik*3+10);
		gBellek.drawLine(genislik/2+(V_arti-V_eksi)*3,yukseklik*5/6+(-Komgenlik)*3+10,
									 genislik/2+(V_arti-V_eksi)*3+(Vingenlik)*3,yukseklik*5/6+(-Komgenlik)*3+10);
		
		/*sinüs gerilim dalgası hesaplanıyor*/
		
		if((eviren_evirmeyen && V_arti-V_eksi>=0) || (!eviren_evirmeyen && V_arti-V_eksi >= 0)) Vingenlik *= 1;
		else if((eviren_evirmeyen && V_arti-V_eksi<0) || (!eviren_evirmeyen && V_arti-V_eksi<0)) Vingenlik *=-1;
		
		for(int i=1;i<360;i++){
			gerilim_sinus[i]		= Math.sin((pi/180)*i)*(-Vingenlik*3);
			gerilim_integer_sinus[i]= (int)gerilim_sinus[i];
		}
		
		//gerilim kaynağının tepe değeri yazdırılıyor
		gBellek.setColor(Color.black);
		gBellek.drawLine(referans-4,yukseklik/6+gerilim_integer_sinus[90]+10,referans+3,
								 yukseklik/6+gerilim_integer_sinus[90]+10);
		gBellek.drawString(Integer.toString(-gerilim_integer_sinus[90]/3),referans-15,yukseklik/6+gerilim_integer_sinus[90]+15);
		
		//komparator çıkışının genliği yazdırılıyor
		gBellek.drawLine(referans-4,yukseklik/2+(-Komgenlik)*3+10,referans+3,
								 yukseklik/2+(-Komgenlik)*3+10);
		gBellek.drawString(Integer.toString(Komgenlik),referans-15,yukseklik/2+(-Komgenlik)*3+15);
		//dc sabit gerilim kaynağının değeri çizdiriliyor
		gBellek.drawLine(referans-4, yukseklik/6+(-Vref)*3+10, 
								 referans+3, yukseklik/6+(-Vref)*3+10);
		gBellek.drawString(Integer.toString(Vref),referans+10,yukseklik/6+(-Vref)*3+10);
		
		gBellek.setColor(Color.lightGray);
		gBellek.drawLine(referans+4, yukseklik/6+(-Vref)*3+10, 
								 referans+360, yukseklik/6+(-Vref)*3+10);
		
		gBellek.setColor(Color.blue);
		//sinus gerilim dalgası çizdiriliyor
		for(int a=0;a<2;a++){
			for(int i=0;i<360;i++){
				eksen = (int)(i/2);
				gBellek.drawLine(eksen + referans, gerilim_integer_sinus[i] 
											 + yukseklik/6+10, eksen + referans, gerilim_integer_sinus[i] + yukseklik/6+10);
			}
			referans = referans + eksen;
		}
		referans = 16;
		eksen = 0;
		
		//imza
		gBellek.setFont(new Font("Courier",Font.ITALIC,14));
		gBellek.setColor(Color.red);
		gBellek.drawString("H.G.",genislik-50,20);
		
		gBellek.setFont(new Font("TimesRoman",Font.PLAIN,16));
		gBellek.drawString(baslik,(genislik-fm.stringWidth(baslik))/2,yukseklik*2/3);
		g.drawImage(ekranDisiResim,0,0,this);
	}
	
	public void update(Graphics g){
		paint(g);
	}
	
	public Dimension getPreferredSize(){
		return new Dimension(400,500);
	}
}

class Opamp extends Canvas{
	int yukseklik, genislik;
	int Vingenlik = 10, Vref=0, Komgenlik=10;
	int opamp_genislik = 100, opamp_yukseklik = 100, xfark, yfark;
	boolean  eviren_evirmeyen=true;
	
	Font gecerliFont;
	Image ekranDisiResim;
	Graphics gBellek;
	public Opamp(String renk){
		setBackground(Color.decode("#"+renk));
	}
	public void guncelle(int Vingenlik, int Vref, int Komgenlik, boolean eviren_evirmeyen){
		this.Vingenlik = Vingenlik;
		this.Vref = Vref;
		this.Komgenlik = Komgenlik;
		this.eviren_evirmeyen = eviren_evirmeyen;
		repaint();
	}
	
	public void paint(Graphics g){
		yukseklik = this.getSize().height;
		genislik = this.getSize().width;
		ekranDisiResim = createImage(genislik, yukseklik);
		gBellek = ekranDisiResim.getGraphics();
		
		gecerliFont = gBellek.getFont();
		gBellek.setFont(gecerliFont);
		xfark = (genislik-opamp_genislik)/2;
		yfark = (yukseklik-opamp_yukseklik)/2;
		
		//üç boyut etkisi kazandırılıyor
		gBellek.setColor(Color.white);
		gBellek.draw3DRect(0,0,genislik-1,yukseklik-1,true);
		gBellek.draw3DRect(1,1,genislik-2,yukseklik-2,true);
		gBellek.draw3DRect(2,2,genislik-3,yukseklik-3,true);
		gBellek.draw3DRect(2,2,genislik-4,yukseklik-4,true);
		gBellek.draw3DRect(2,2,genislik-5,yukseklik-5,true);
		
		gBellek.setColor(Color.blue);
		gBellek.setFont(new Font("TimesRoman",Font.PLAIN,16));
		gBellek.drawString("Karşılaştırıcı",80,20);
		gBellek.setColor(Color.black);
		
		//opamp çiziliyor
		gBellek.drawLine(xfark,yfark,xfark,yfark+opamp_yukseklik);
		gBellek.drawLine(xfark,yfark,
								 xfark+opamp_genislik,yfark+opamp_yukseklik/2);
		gBellek.drawLine(xfark,yfark+opamp_yukseklik,
								 xfark+opamp_genislik,yfark+opamp_yukseklik/2);
		
		gBellek.drawLine(xfark-20,yfark+20,xfark,yfark+20);
		gBellek.drawLine(xfark-20,yfark+opamp_yukseklik-20,xfark,yfark+opamp_yukseklik-20);
		gBellek.drawLine(xfark+opamp_genislik,yfark+opamp_yukseklik/2,
								 xfark+opamp_genislik+20,yfark+opamp_yukseklik/2);
		
		gBellek.drawOval(xfark-30,yfark+15,10,10);
		gBellek.drawOval(xfark-30,yfark+opamp_yukseklik-25,10,10);
		gBellek.drawOval(xfark+opamp_genislik+20,yfark+opamp_yukseklik/2-5,10,10);
		
		gBellek.setFont(new Font("TimesRoman",Font.BOLD,24));
		gBellek.drawString("_",xfark+5,yfark+20);
		gBellek.drawString("+",xfark+5,yfark+opamp_yukseklik-15);
		
		gBellek.setFont(gecerliFont);
		gBellek.drawLine(xfark+opamp_genislik/2,yfark+opamp_yukseklik/4,
								 xfark+opamp_genislik/2,yfark);
		gBellek.drawLine(xfark+opamp_genislik/2,yfark+opamp_yukseklik,
								 xfark+opamp_genislik/2,yfark+opamp_yukseklik-opamp_yukseklik/4);
		
		gBellek.drawOval(xfark+opamp_genislik/2-5,yfark-10,10,10);
		gBellek.drawOval(xfark+opamp_genislik/2-5,yfark+opamp_yukseklik,10,10);
		
		gBellek.setColor(Color.decode("#007846"));
		gBellek.drawString("+"+Integer.toString(Komgenlik)+"V",xfark+opamp_genislik/2+10,yfark);
		gBellek.drawString("-"+Integer.toString(Komgenlik)+"V",xfark+opamp_genislik/2+10,yfark+opamp_yukseklik);
		
		if(eviren_evirmeyen){
			gBellek.drawString("Vref= "+Integer.toString(Vref)+"V",5,yfark+15);
			gBellek.setColor(Color.blue);
			gBellek.drawString("Vin= "+Integer.toString(Vingenlik)+"V",5,yfark+opamp_yukseklik-25);
		}
		else if(!eviren_evirmeyen){
			gBellek.setColor(Color.blue);
			gBellek.drawString("Vin= "+Integer.toString(Vingenlik)+"V",5,yfark+15);
			gBellek.setColor(Color.decode("#007846"));
			gBellek.drawString("Vref= "+Integer.toString(Vref)+"V",5,yfark+opamp_yukseklik-25);
		}
		
		g.drawImage(ekranDisiResim,0,0,this);
	}
	
	public void update(Graphics g){
		paint(g);
	}
	
	public Dimension getPreferredSize(){
		return new Dimension(250,200);
	}
}

class KontrolPaneli extends Panel{
	int yukseklik, genislik;
	KontrolGrubu kontrolGrubu;
	
	public KontrolPaneli(String renk, CizimAlani cizimAlani, Opamp opamp){
		setLayout(new BorderLayout());
		setBackground(Color.decode("#"+renk));
		kontrolGrubu = new KontrolGrubu(cizimAlani, opamp);
		add(kontrolGrubu,"Center");
	}
	public Insets getInsets(){
		return new Insets(5,5,5,5);
	}
	public void paint(Graphics g){
		yukseklik = getSize().height;
		genislik = getSize().width;
		
		//üç boyut etkisi kazandırılıyor
		g.setColor(Color.white);
		g.draw3DRect(0,0,genislik-1,yukseklik-1,true);
		g.draw3DRect(1,1,genislik-2,yukseklik-2,true);
		g.draw3DRect(2,2,genislik-3,yukseklik-3,true);
		g.draw3DRect(2,2,genislik-4,yukseklik-4,true);
		g.draw3DRect(2,2,genislik-5,yukseklik-5,true);
	}
	public Dimension getPreferredSize(){
		return new Dimension(250,250);
	}
}

class KontrolGrubu extends Panel implements AdjustmentListener, ItemListener{
	CizimAlani cizimAlani;
	Opamp opamp;
	
	int Vingenlik=10, Vref=0, Komgenlik=10;
	boolean eviren_evirmeyen=true;
	Scrollbar Vin, Vdc, Kom;
	Label VinBaslik, VdcBaslik, KomBaslik, VinEtiketi, VdcEtiketi, KomEtiketi, SecimBaslik;
	Panel panel1, panel2, panel3, panel4, butun1, butun2, butun3, butun4;
	Checkbox eviren, evirmeyen;
	CheckboxGroup grup = new CheckboxGroup();
	
	public KontrolGrubu(CizimAlani cizimAlani, Opamp opamp){
		this.cizimAlani = cizimAlani;
		this.opamp = opamp;
		
		Vin			= new Scrollbar(Scrollbar.HORIZONTAL,1,1,10,16);
		Vdc			= new Scrollbar(Scrollbar.HORIZONTAL,-10,1,0,11);
		Kom			= new Scrollbar(Scrollbar.HORIZONTAL,10,1,10,21);
		evirmeyen	= new Checkbox("(+)",true,grup);
		eviren		= new Checkbox("(-)",false,grup);
		
		evirmeyen.setEnabled(true);
		eviren.setEnabled(true);
		
		VinBaslik	= new Label("Vin (V)  = ");
		VinEtiketi	= new Label("10");
		VdcBaslik	= new Label("Vref (V)  = ");
		VdcEtiketi	= new Label("0");
		KomBaslik	= new Label("Çıkış Genliği (V) =");
		KomEtiketi	= new Label("10");
		SecimBaslik = new Label("Karşılaştırılan Vin Girişini Seçin");
		
		VinBaslik.setFont	(new Font("Courier",Font.BOLD,12));
		VdcBaslik.setFont	(new Font("Courier",Font.BOLD,12));
		KomBaslik.setFont	(new Font("Courier",Font.BOLD,12));
		VinEtiketi.setFont	(new Font("Courier",Font.BOLD,12));
		VdcEtiketi.setFont	(new Font("Courier",Font.BOLD,12));
		KomEtiketi.setFont	(new Font("Courier",Font.BOLD,12));
		SecimBaslik.setFont	(new Font("Courier",Font.BOLD,12));
		
		panel1 = new Panel();
		panel2 = new Panel();
		panel3 = new Panel();
		panel4 = new Panel();
		
		butun1 = new Panel();
		butun2 = new Panel();
		butun3 = new Panel();
		butun4 = new Panel();
		
		panel1.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel3.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel4.setLayout(new FlowLayout(FlowLayout.LEFT));
		
		panel1.add(VinBaslik);
		panel1.add(VinEtiketi);
				
		panel2.add(VdcBaslik);
		panel2.add(VdcEtiketi);
				
		panel3.add(KomBaslik);
		panel3.add(KomEtiketi);
				
		panel4.add(evirmeyen);
		panel4.add(eviren);
		
		butun1.setLayout(new GridLayout(2,1));
		butun2.setLayout(new GridLayout(2,1));
		butun3.setLayout(new GridLayout(2,1));
		butun4.setLayout(new GridLayout(2,1));
		
		butun1.add(panel1);
		butun1.add(Vin);
		
		butun2.add(panel2);
		butun2.add(Vdc);
		
		butun3.add(panel3);
		butun3.add(Kom);
		
		butun4.add(SecimBaslik);
		butun4.add(panel4);
		
		setLayout(new GridLayout(4,1));
		add(butun4);
		add(butun1);
		add(butun2);
		add(butun3);
		
		Vin.addAdjustmentListener(this);
		Vdc.addAdjustmentListener(this);
		Kom.addAdjustmentListener(this);
		evirmeyen.addItemListener(this);
		eviren.addItemListener(this);
		
		Vin.setBlockIncrement(1);
		Vin.setUnitIncrement(1);
		Vin.setMaximum(16);
		Vin.setMinimum(1);
		
		Vdc.setBlockIncrement(1);
		Vdc.setUnitIncrement(1);
		Vdc.setMaximum(11);
		Vdc.setMinimum(-10);
		
		Kom.setBlockIncrement(1);
		Kom.setUnitIncrement(1);
		Kom.setMaximum(21);
		Kom.setMinimum(10);
	}
	
	public void adjustmentValueChanged(AdjustmentEvent olay){
		Vingenlik = Vin.getValue();
		VinEtiketi.setText(Integer.toString(Vingenlik));
		Vref = Vdc.getValue();
		VdcEtiketi.setText(Integer.toString(Vref));
		Komgenlik = Kom.getValue();
		KomEtiketi.setText(Integer.toString(Komgenlik));
		
		if(evirmeyen.getState()) eviren_evirmeyen = true;
		else eviren_evirmeyen = false;
		
		cizimAlani.guncelle(Vingenlik,Vref,Komgenlik,eviren_evirmeyen);
		opamp.guncelle(Vingenlik, Vref, Komgenlik, eviren_evirmeyen);
	}
	
	public void itemStateChanged(ItemEvent olay){
		if(evirmeyen.getState()){
			eviren_evirmeyen = true;
		}
		else eviren_evirmeyen = false;
		
		cizimAlani.guncelle(Vingenlik,Vref,Komgenlik,eviren_evirmeyen);
		opamp.guncelle(Vingenlik, Vref, Komgenlik, eviren_evirmeyen);
	}
}