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 Schmitt extends Applet
{
	CizimAlani cizimAlani;
	Opamp opamp;
	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, cizimAlani);
		
		add(cizimAlani);
		add(opamp);	
	}
	
	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);
	}
	
	public Insets getInsets(){
		return new Insets(0,0,0,0);
	}
}

class CizimAlani extends Canvas{
	double gerilim_sinus[] = new double[360];
	int gerilim_integer_sinus[] = new int[360];
	int yukseklik, genislik;
	int Vingenlik = 15, Vref = 0, Vmax = 10;
	int referans = 16, eksen = 0;
	int komx, komx2, komy, neg_gen, artim=0, ikinci_baslangic, son, poz_gen;
	boolean cikis = false;
	double pi, R1 = 10, R2 = 10;
	float LTL, UTL;
	String baslik = new String("Histerezis Döngüsü");
	Font gecerliFont;
	Image ekranDisiResim;
	Graphics gBellek;
	
	public CizimAlani(String renk){
		setBackground(Color.decode("#"+renk));	
		pi = Math.PI;
		LTL = (float)((R2/(R1+R2))*Vref + (R1/(R1+R2))*(-Vmax));
		UTL = (float)((R2/(R1+R2))*Vref + (R1/(R1+R2))*Vmax);
		
		gerilim_integer_sinus[0]= 0;

	}
	
	public void guncelle(int Vingenlik, int Vref, int Vmax, double R1, double R2){
		this.Vingenlik = Vingenlik;
		this.Vref = Vref;
		this.Vmax = Vmax;
		this.R1 = R1;
		this.R2 = R2;
		
		LTL = (float)((R2/(R1+R2))*Vref + (R1/(R1+R2))*(-Vmax));
		UTL = (float)((R2/(R1+R2))*Vref + (R1/(R1+R2))*Vmax);
		
		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(UTL >= 0){
					if(gerilim_sinus[artim] >= UTL){
						komx = (int)(artim/2);
						cikis = true;
					}
				}
				else if(UTL < 0){
					if(gerilim_sinus[artim] < UTL){
						komx = 90 - (int)(artim/2);
						cikis = true;
					}
				}
				artim++;
			}
			artim = 90; //ilk LTL noktasının hesaplanması esnasında
						//LTL'nin pozitif olduğu durumda ilk pozitif 
						//noktasının atlanması için
			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_sinus[artim] <= LTL){
					komx2 = (int)(artim/2);
					cikis = true;
				}
				artim++;
			}
		
		artim = 0;
		cikis=false;
		
		ikinci_baslangic = komx + 180;
		neg_gen = komx2-komx;//negatif çıkış genişliği
		poz_gen = ikinci_baslangic - komx2;//pozitif çıkış genişliği
		if(360 - ikinci_baslangic-neg_gen <= poz_gen) son = 360;
		else if(360 - ikinci_baslangic-neg_gen > poz_gen) son = ikinci_baslangic+neg_gen+poz_gen;
		if(komx < 0) komx = 0;
		
		/*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
		gBellek.setColor(Color.decode("#007846"));
		
		//artı çizgiler çiziliyor
		
		gBellek.drawLine(referans,yukseklik/2+10+(-Vmax)*3,
								 referans+komx,yukseklik/2+10+(-Vmax)*3);
		gBellek.drawLine(referans+komx2, yukseklik/2+10+(-Vmax)*3,
								 referans+ikinci_baslangic, yukseklik/2+10+(-Vmax)*3);
		gBellek.drawLine(referans+ikinci_baslangic+neg_gen,yukseklik/2+10+(-Vmax)*3,
								 referans+son,yukseklik/2+10+(-Vmax)*3);
		
		//eksi çizgiler çiziliyor
		gBellek.drawLine(referans+komx,yukseklik/2+10+Vmax*3,
								 referans+komx2,yukseklik/2+10+Vmax*3);
		gBellek.drawLine(referans+ikinci_baslangic,yukseklik/2+10+Vmax*3,
								 referans+ikinci_baslangic+neg_gen,yukseklik/2+10+Vmax*3);
	
		//dikey çizgiler çiziliyor
		gBellek.drawLine(referans+komx,yukseklik/2+10+Vmax*3,referans+komx,yukseklik/2+10+(-Vmax)*3);
		gBellek.drawLine(referans+komx2,yukseklik/2+10+Vmax*3,referans+komx2,yukseklik/2+10+(-Vmax)*3);
		gBellek.drawLine(referans+ikinci_baslangic,yukseklik/2+10+Vmax*3,
								 referans+ikinci_baslangic,yukseklik/2+10+(-Vmax)*3);
		gBellek.drawLine(referans+ikinci_baslangic+neg_gen,yukseklik/2+10+Vmax*3,
								 referans+ikinci_baslangic+neg_gen,yukseklik/2+10+(-Vmax)*3);
		
		gBellek.setColor(Color.lightGray);
		gBellek.drawLine(referans+komx, yukseklik/2+10+(-Vmax)*3,
								 referans+komx, yukseklik/6+10+(int)(-UTL*3));
		gBellek.drawLine(referans+komx2, yukseklik/2+10+(-Vmax)*3,
								 referans+komx2, yukseklik/6+10+(int)(-LTL*3));
		gBellek.drawLine(referans+ikinci_baslangic, yukseklik/2+10+(-Vmax)*3,
								 referans+ikinci_baslangic, yukseklik/6+10+(int)(-UTL*3));
		gBellek.drawLine(referans+ikinci_baslangic+neg_gen, yukseklik/2+10+(-Vmax)*3,
								 referans+ikinci_baslangic+neg_gen, yukseklik/6+10+(int)(-LTL*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+(int)(LTL*3)-30,yukseklik*5/6+10+(-Vmax*3),genislik/2+(int)(UTL*3),
								 yukseklik*5/6+10+(-Vmax*3));
		gBellek.drawLine(genislik/2+(int)(LTL*3),yukseklik*5/6+10+Vmax*3,genislik/2+(int)(UTL*3)+30,
								 yukseklik*5/6+10+Vmax*3);
		gBellek.drawLine(genislik/2+(int)(LTL*3),yukseklik*5/6+10+(-Vmax*3),
								 genislik/2+(int)(LTL*3),yukseklik*5/6+10+Vmax*3);
		gBellek.drawLine(genislik/2+(int)(UTL*3),yukseklik*5/6+10+(-Vmax*3),
								 genislik/2+(int)(UTL*3),yukseklik*5/6+10+Vmax*3);
		gBellek.drawString("UTL",genislik/2+(int)(UTL*3)+10,yukseklik*5/6+5);
		gBellek.drawString("LTL",genislik/2+(int)(LTL*3)-20,yukseklik*5/6+5);
		gBellek.drawString("+Vçıkış",genislik/2+5,yukseklik*5/6+(-Vmax*3)+5);
		gBellek.drawString("-Vçıkış",genislik/2+10-50,yukseklik*5/6+Vmax*3+20);
		gBellek.setColor(Color.green);//oklar çiziliyor
		gBellek.drawLine(genislik/2+(int)(LTL*3)+(int)((UTL-LTL)/2),yukseklik*5/6+5+(-Vmax*3),
								 genislik/2+(int)(UTL*3)-(int)((UTL-LTL+10)/2),yukseklik*5/6+10+(-Vmax*3));
		gBellek.drawLine(genislik/2+(int)(UTL*3)-(int)((UTL-LTL)/2),yukseklik*5/6+5+Vmax*3,
								 genislik/2+(int)(LTL*3)+(int)((UTL-LTL+10)/2),yukseklik*5/6+10+Vmax*3);
		gBellek.drawLine(genislik/2+(int)(LTL*3)-5,yukseklik*5/6+15,genislik/2+(int)(LTL*3),
								 yukseklik*5/6+(int)((-Vmax*3)/2)+10);
		gBellek.drawLine(genislik/2+(int)(UTL*3)-5,yukseklik*5/6+(int)((-Vmax*3)/2)+10,genislik/2+(int)(UTL*3),
								 yukseklik*5/6+15);
		
		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+(-Vmax)*3+10,referans+3,
								 yukseklik/2+(-Vmax)*3+10);
		gBellek.drawString(Integer.toString(Vmax),referans-15,yukseklik/2+(-Vmax)*3+15);
		
		//Vref gerilim kaynağının değeri çizdiriliyor
		gBellek.drawLine(referans-4, yukseklik/6+(int)(-UTL*3)+10, 
								 referans+3, yukseklik/6+(int)(-UTL*3)+10);
		gBellek.drawString(Float.toString(UTL),referans+10,yukseklik/6+(int)(-UTL*3)+10);
		
		gBellek.setColor(Color.lightGray);
		gBellek.drawLine(referans+4, yukseklik/6+(int)(-UTL*3)+10, 
								 referans+360, yukseklik/6+(int)(-UTL*3)+10);
		gBellek.drawLine(referans, yukseklik/6+(int)(-LTL*3)+10,referans+360,
								 yukseklik/6+(int)(-LTL*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 Panel implements AdjustmentListener{
	int yukseklik, genislik;
	int Vingenlik = 15, Vref=0, Vmax=10;
	int op_gen = 100, op_yuk = 100, xfark, yfark;
	double R1 = 10, R2 = 10;
	
	Font gecerliFont;
	CizimAlani cizimAlani;
	DirencDialog R1direnci = new DirencDialog(this, "R1");
	DirencDialog R2direnci = new DirencDialog(this, "R2");
	
	Scrollbar VmaxScroll, VrefScroll;
	Label VrefBaslik, VmaxBaslik, VrefEtiketi, VmaxEtiketi;
	Panel panel1, panel2, butun;
	
	Image ekranDisiResim;
	Graphics gBellek;
	
	public Opamp(String renk, CizimAlani cizimAlani){
		setBackground(Color.decode("#"+renk));
		setLayout(new BorderLayout());
		
		this.cizimAlani = cizimAlani;
		
		addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent olay){	
				if(olay.getX() >= xfark-30 && olay.getX() <= xfark-10 && olay.getY() >= yfark+op_yuk+50
				   && olay.getY() <= yfark+op_yuk+110){
					Point konum = Opamp.this.getLocationOnScreen();
						R1direnci.addWindowListener(new WindowAdapter(){
							public void windowClosing(WindowEvent olay){
								R1direnci.dispose();
							}
						});
					R1direnci.setLocation(konum.x+xfark-30,konum.y+yfark+op_yuk+50);
					R1direnci.show();
					R1direnci.pack();
					R1direnci.setResizable(false);
				}
				
				if(olay.getX() >= xfark+op_gen/2-5 && olay.getX() <= xfark+op_gen/2+50
					&& olay.getY() >= yfark+op_yuk+10 && olay.getY() <= yfark+op_yuk+30)
				{
					Point konum = Opamp.this.getLocationOnScreen();
						R2direnci.addWindowListener(new WindowAdapter(){
							public void windowClosing(WindowEvent olay){
								R2direnci.dispose();
							}
						});
					R2direnci.setLocation(konum.x+xfark+op_gen/2,konum.y+yfark+op_yuk+30);
					R2direnci.show();
					R2direnci.pack();
					R2direnci.setResizable(false);
				}
			}
			
		});
		addMouseMotionListener(new MouseMotionListener(){
			public void mouseMoved(MouseEvent olay){
				if((olay.getX() >= xfark-30 && olay.getX() <= xfark-10 && olay.getY() >= yfark+op_yuk+50
				   && olay.getY() <= yfark+op_yuk+110) || (olay.getX() >= xfark+op_gen/2-5 && olay.getX() <= xfark+op_gen/2+50
					&& olay.getY() >= yfark+op_yuk+10 && olay.getY() <= yfark+op_yuk+30))
				{
					setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
				}
				else setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
			}
			public void mouseDragged(MouseEvent olay){
			}
		});
		
		VrefScroll	= new Scrollbar(Scrollbar.HORIZONTAL,-10,1,0,11);
		VmaxScroll	= new Scrollbar(Scrollbar.HORIZONTAL,10,1,10,21);
		
		VrefBaslik	= new Label("Vref (V)= ");
		VrefEtiketi	= new Label("0  ");
		VmaxBaslik	= new Label("Çıkış Genliği (V)= ");
		VmaxEtiketi	= new Label("10 ");
		
		VrefBaslik.setFont	(new Font("Courier",Font.BOLD,12));
		VrefEtiketi.setFont	(new Font("Courier",Font.BOLD,12));
		VmaxBaslik.setFont	(new Font("Courier",Font.BOLD,12));
		VmaxEtiketi.setFont	(new Font("Courier",Font.BOLD,12));
		
		panel1	= new Panel();
		panel2	= new Panel();
		butun	= new Panel();
		
		panel1.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
		butun.setLayout(new GridLayout(4,1));
		
		panel1.add(VrefBaslik);
		panel1.add(VrefEtiketi);
				
		panel2.add(VmaxBaslik);
		panel2.add(VmaxEtiketi);
		
		butun.add(panel1);
		butun.add(VrefScroll);
		butun.add(panel2);
		butun.add(VmaxScroll);
		
		add(butun,"South");
		
		VrefScroll.addAdjustmentListener(this);
		VmaxScroll.addAdjustmentListener(this);
		
		VrefScroll.setBlockIncrement(1);
		VrefScroll.setUnitIncrement(1);
		VrefScroll.setMaximum(11);
		VrefScroll.setMinimum(-10);
		
		VmaxScroll.setBlockIncrement(1);
		VmaxScroll.setUnitIncrement(1);
		VmaxScroll.setMaximum(21);
		VmaxScroll.setMinimum(10);
	}
	
	public void adjustmentValueChanged(AdjustmentEvent olay){
		Vref = VrefScroll.getValue();
		VrefEtiketi.setText(Integer.toString(Vref));
		Vmax = VmaxScroll.getValue();
		VmaxEtiketi.setText(Integer.toString(Vmax));
		
		cizimAlani.guncelle(Vingenlik,Vref,Vmax,R1, R2);
		repaint();
	}
	
	public void guncelle(double direncDegeri, String direnc){
		if(direnc == "R1") this.R1 = direncDegeri;
		else if(direnc == "R2") this.R2 = direncDegeri;
		
		cizimAlani.guncelle(Vingenlik,Vref,Vmax,R1,R2);
		repaint();
	}
	
	public Insets getInsets(){
		return new Insets(10,10,10,10);
	}
	
	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-op_gen)/2;
		yfark = 50;
		
		//üç 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("Schmitt Tetikleyici",80,20);
		
		gBellek.setFont(gecerliFont);
		gBellek.setColor(Color.black);
		
		//opamp çiziliyor
		gBellek.drawLine(xfark,yfark,xfark,yfark+op_yuk);
		gBellek.drawLine(xfark,yfark,
								 xfark+op_gen,yfark+op_yuk/2);
		gBellek.drawLine(xfark,yfark+op_yuk,
								 xfark+op_gen,yfark+op_yuk/2);
		
		gBellek.drawLine(xfark-20,yfark+20,xfark,yfark+20);
		gBellek.drawLine(xfark-20,yfark+op_yuk-20,xfark,yfark+op_yuk-20);
		gBellek.drawLine(xfark+op_gen,yfark+op_yuk/2,
								 xfark+op_gen+50,yfark+op_yuk/2);
		gBellek.drawLine(xfark-20,yfark+op_yuk-20,xfark-20,yfark+op_yuk+50);
		gBellek.drawLine(xfark-20,yfark+op_yuk+110,xfark-20,yfark+op_yuk+135);
		gBellek.drawLine(xfark+op_gen/2-5,yfark+op_yuk+20,xfark-20,yfark+op_yuk+20);
		gBellek.drawLine(xfark+op_gen/2+55,yfark+op_yuk+20,xfark+op_gen+25,yfark+op_yuk+20);
		gBellek.drawLine(xfark+op_gen+25,yfark+op_yuk+20,xfark+op_gen+25,yfark+op_yuk/2);
		
		gBellek.drawOval(xfark-30,yfark+15,10,10);
		gBellek.drawOval(xfark-25,yfark+op_yuk+135,10,10);
		gBellek.drawOval(xfark+op_gen+50,yfark+op_yuk/2-5,10,10);
		gBellek.fillOval(xfark-25,yfark+op_yuk+15,10,10);
		gBellek.fillOval(xfark+op_gen+20,yfark+op_yuk/2-5,10,10);
		
		gBellek.setFont(new Font("TimesRoman",Font.BOLD,24));
		gBellek.drawString("_",xfark+5,yfark+20);
		gBellek.drawString("+",xfark+5,yfark+op_yuk-15);
		
		gBellek.setFont(gecerliFont);
		gBellek.setColor(Color.decode("#007846"));
		gBellek.drawString("Vref= "+Integer.toString(Vref),xfark-25,yfark+op_yuk+160);
		gBellek.setColor(Color.red);
		gBellek.drawString("Vçıkış= "+Integer.toString(Vmax),xfark+op_gen,yfark+op_yuk/2-10);
		gBellek.setColor(Color.blue);
		gBellek.drawString("Vin",xfark-50,yfark+25);
		
		// R1 çiziliyor
		gBellek.setColor(Color.black);
		gBellek.drawString("R1 = "+Double.toString(R1)+"k",xfark,yfark+op_yuk+90);
		gBellek.drawLine(xfark-20,yfark+op_yuk+50,xfark-10,yfark+op_yuk+55);
		gBellek.drawLine(xfark-10,yfark+op_yuk+55,xfark-30,yfark+op_yuk+65);
		gBellek.drawLine(xfark-30,yfark+op_yuk+65,xfark-10,yfark+op_yuk+75);
		gBellek.drawLine(xfark-10,yfark+op_yuk+75,xfark-30,yfark+op_yuk+85);
		gBellek.drawLine(xfark-30,yfark+op_yuk+85,xfark-10,yfark+op_yuk+95);
		gBellek.drawLine(xfark-10,yfark+op_yuk+95,xfark-30,yfark+op_yuk+105);
		gBellek.drawLine(xfark-30,yfark+op_yuk+105,xfark-20,yfark+op_yuk+110);
		
		// R2 çiziliyor
		gBellek.drawString("R2 = "+Double.toString(R2)+"k",xfark+op_gen/2,yfark+op_yuk);
		gBellek.drawLine(xfark+op_gen/2-5,yfark+op_yuk+20,xfark+op_gen/2,yfark+op_yuk+10);
		gBellek.drawLine(xfark+op_gen/2,yfark+op_yuk+10,xfark+op_gen/2+10,yfark+op_yuk+30);
		gBellek.drawLine(xfark+op_gen/2+10,yfark+op_yuk+30,xfark+op_gen/2+20,yfark+op_yuk+10);
		gBellek.drawLine(xfark+op_gen/2+20,yfark+op_yuk+10,xfark+op_gen/2+30,yfark+op_yuk+30);
		gBellek.drawLine(xfark+op_gen/2+30,yfark+op_yuk+30,xfark+op_gen/2+40,yfark+op_yuk+10);
		gBellek.drawLine(xfark+op_gen/2+40,yfark+op_yuk+10,xfark+op_gen/2+50,yfark+op_yuk+30);
		gBellek.drawLine(xfark+op_gen/2+50,yfark+op_yuk+30,xfark+op_gen/2+55,yfark+op_yuk+20);
		
		g.drawImage(ekranDisiResim,0,0,this);
	}
	
	public void update(Graphics g){
		paint(g);
	}
	
	public Dimension getPreferredSize(){
		return new Dimension(250,500);
	}
}