Archief - JAVA Loop

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

JGoeyvaerts

Legacy Member
Hey, ben tijdje aan het oefenen met java(textpad, want we moeten het 1ste examen met dat werken :s)

nu probeer ik een loop te maken als ik op een button heb geklikt maar hij tekent enkel 1 maar een woord maar wel na het x aantal stappen dat ik opgeeft. Iemand soms een idee ik dit oplos?

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class LusAndIf extends Applet
{
	//knop en button
	Button btnClick,btnLoop;
	TextField txtCheck;


	//een varaible dat mij helpt
	String check = "";
	int cordY = 100;

	public void init()
	{
		//aanmaken van de knop en button
		btnClick = new Button("Click");
		this.add(btnClick);
		btnClick.addActionListener(new CheckHandeler());

		btnLoop = new Button("Loop");
		this.add(btnLoop);
		btnLoop.addActionListener(new LoopHandeler());

		txtCheck = new TextField(8);
		this.add(txtCheck);


	}

	public void paint(Graphics g)
	{
		//het uittekenen van de tekst
		drawText(g);

	}

	public void drawText(Graphics g)
	{

		g.drawString(check,20,cordY);
	}



	public class CheckHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			//String uit het textfield halen
			check = txtCheck.getText();

			//als de String mijn naam bevat ben ik welkom anders niet.
			if(check.equals("Joeri"))
			{
				check = "Welkom Joeri!";
			}

			else
			{
				check = "U bent Joeri niet!!";

			}

			//herpainten van het applet
			repaint();
		}
	}

	public class LoopHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			cordY = 100;
			for(int i = 0; i < Integer.parseInt(txtCheck.getText());i++)
			{
				//afprinten van x aantal keer haha
				check = "haha";

				cordY += 20;


			}
			//herpainten van het applet
			repaint();
		}
	}

}

Nu heb ik geprobeerd om drawText() in me LoopHandeler te steken maar dan krijg ik steeds de fout van "Missing symbols"

Ik denk zelf dat ergens een domme fout is ben er zelf nog op aan het zoeken mss dat ik gewoon die loop herschrijf ergens anders.

JGoeyvaerts

Legacy Member
een andere manier dat ik het probeer, deze lijkt me meer logisch maar hier krijg ik dus deze fout : "cannot find symbol,
symbol : variable g"

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class LusAndIf extends Applet
{
	//knop en button
	Button btnClick,btnLoop;
	TextField txtCheck;


	//een varaible dat mij helpt
	String check = "";
	int cordY = 100;

	public void init()
	{
		//aanmaken van de knop en button
		btnClick = new Button("Click");
		this.add(btnClick);
		btnClick.addActionListener(new CheckHandeler());

		btnLoop = new Button("Loop");
		this.add(btnLoop);
		btnLoop.addActionListener(new LoopHandeler());

		txtCheck = new TextField(8);
		this.add(txtCheck);


	}

	public void paint(Graphics g)
	{
		//het uittekenen van de tekst
		drawText(g);

	}

	public void drawText(Graphics g)
	{
		cordY = 100;
		for(int i = 0; i < Integer.parseInt(txtCheck.getText());i++)
			{
				//afprinten van x aantal keer haha
				check = "haha";
				g.drawString(check,20,cordY);
				cordY += 20;


			}

	}



	public class CheckHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			//String uit het textfield halen
			check = txtCheck.getText();

			//als de String mijn naam bevat ben ik welkom anders niet.
			if(check.equals("Joeri"))
			{
				check = "Welkom Joeri!";
			}

			else
			{
				check = "U bent Joeri niet!!";

			}

			//herpainten van het applet
			repaint();
		}
	}

	public class LoopHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			drawText(g);
			//herpainten van het applet
			repaint();
		}
	}

}

cool_boy_ke

Legacy Member
Is normaal, in de inner class LoopHandeler bestaat de variable g niet é :)

JGoeyvaerts

Legacy Member
daar heb ik ook al aan gedacht

Code:
public class LoopHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e, Graphics g)
		{
			drawText(g);
			//herpainten van het applet
			repaint();
		}
	}

of was het niet zo dat je het bedoelde?

want dit geeft ook een fout.

LusAndIf.LoopHandeler is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener
public class LoopHandeler implements ActionListener




Heb men code wat herschreven, maar blijkt dat er eigenlijk minder werkt dan ervoor :s god wel beschamend als iets simpel niet werkt

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class LusAndIf extends Applet
{
	//knop en button
	Button btnClick,btnLoop;
	TextField txtCheck;


	Graphics g;

	//een varaible dat mij helpt
	String check = "";
	int cordY = 100;

	boolean bName = false;
	boolean bLoop = false;


	public void init()
	{
		//aanmaken van de knop en button
		btnClick = new Button("Click");
		this.add(btnClick);
		btnClick.addActionListener(new CheckHandeler());

		btnLoop = new Button("Loop");
		this.add(btnLoop);
		btnLoop.addActionListener(new LoopHandeler());

		txtCheck = new TextField(8);
		this.add(txtCheck);


	}

	public void paint(Graphics g)
	{

		if(bLoop == false)
		{
			//Doe niets
		}
		else
		{
			drawText(g);
		}


		if(bName == false)
		{
			//Doe niets
		}
		else
		{
			whatsMyName(g);
		}

	}

	public void drawText(Graphics g)
	{
		cordY = 100;
		for(int i = 0; i < Integer.parseInt(txtCheck.getText());i++)
			{
				//afprinten van x aantal keer haha
				check = "haha";
				g.drawString(check,20,cordY);
				cordY += 20;


			}



	}

	public void whatsMyName(Graphics g)
	{
		//String uit het textfield halen
			check = txtCheck.getText();

			//als de String mijn naam bevat ben ik welkom anders niet.
			if(check.equals("Joeri"))
				{
					check = "Welkom Joeri!";

				}

				else
				{
					check = "U bent Joeri niet!!";

				}
			g.drawString(check, 20,100);


	}



	public class CheckHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			bName = true;
			whatsMyName(g);
			repaint();
		}
	}

	public class LoopHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			bLoop = true;
			drawText(g);
			//herpainten van het applet
			repaint();
		}
	}

}

JGoeyvaerts

Legacy Member
Nog effe voort gefoefelt :p heb gewoon de drawString vervangen door een TextField en nu werkt het dus alles zoals ik het wil, mja ben wel genoodzaakt om dat TextField te gebruiken.

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class LusAndIf extends Applet
{
	//knop en button
	Button btnClick,btnLoop;
	TextField txtCheck, txtPrint;

	//een varaible dat mij helpt
	String check = "";

	public void init()
	{
		//aanmaken van de knop en button
		btnClick = new Button("Click");
		this.add(btnClick);
		btnClick.addActionListener(new CheckHandeler());

		btnLoop = new Button("Loop");
		this.add(btnLoop);
		btnLoop.addActionListener(new LoopHandeler());

		txtCheck = new TextField(8);
		this.add(txtCheck);

		txtPrint = new TextField(50);
		this.add(txtPrint);
	}

	public void drawText()
	{
		txtPrint.setText("");
		for(int i = 0; i < Integer.parseInt(txtCheck.getText());i++)
			{
				//afprinten van x aantal keer haha
				check = "haha ";
				txtPrint.setText(check.toString() + txtPrint.getText());

			}



	}

	public void whatsMyName()
	{
		//String uit het textfield halen
			check = txtCheck.getText();

			//als de String mijn naam bevat ben ik welkom anders niet.
			if(check.equals("Joeri"))
				{
					check = "Welkom Joeri!";

				}

				else
				{
					check = "U bent Joeri niet!!";

				}
			txtPrint.setText(check);


	}



	public class CheckHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			whatsMyName();
		}
	}

	public class LoopHandeler implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			drawText();

		}
	}

}

NeverwinterX

Legacy Member
Even misschien wat verduidelijking:
  • De code in je allereerste post werkte niet omdat je enkel "check = "haha";" deed. Je overschreef dus gewoon het gegeven aantal keer die string check. Vrij logisch, als je een getal hebt, bijvoorbeeld x, en je doet 100 keer "x = 5;" dan is x gewoon 5 en niet 5555...5555.
  • De code in je tweede post werkte niet vanwege de reden die cool_boy_ke al zei.
  • De code in je derde post werkt niet omdat de ActionListener een interface is met een methode actionPerformed met 1 parameter ActionEvent die door het teken framework van Java gebruikt wordt. Je hebt daar nu een extra parameter aan toegevoegd Graphics waardoor dat niet overeen komt met die methode uit de interface en het teken framework van Java kan dat dus niet gebruiken. En bovendien implementeer je dan ook niet langer de methode actionPerformed met 1 parameter wat verplicht is als je die interface implementeert.
  • De laatste code is inderdaad eerder wat je zou moeten doen. Je concateneert telkens bij de tekst van dat TextField een nieuw stukje string. Als alternatief kun je ook een String rechtstreeks concateneren of StringBuilder gebruiken en dan rechtstreeks de woorden tekenen via paint met de Graphics zoals je eerst van plan was.

JGoeyvaerts

Legacy Member
NeverwinterX zei:
Even misschien wat verduidelijking:
  • De code in je allereerste post werkte niet omdat je enkel "check = "haha";" deed. Je overschreef dus gewoon het gegeven aantal keer die string check. Vrij logisch, als je een getal hebt, bijvoorbeeld x, en je doet 100 keer "x = 5;" dan is x gewoon 5 en niet 5555...5555.
  • De code in je tweede post werkte niet vanwege de reden die cool_boy_ke al zei.
  • De code in je derde post werkt niet omdat de ActionListener een interface is met een methode actionPerformed met 1 parameter ActionEvent die door het teken framework van Java gebruikt wordt. Je hebt daar nu een extra parameter aan toegevoegd Graphics waardoor dat niet overeen komt met die methode uit de interface en het teken framework van Java kan dat dus niet gebruiken. En bovendien implementeer je dan ook niet langer de methode actionPerformed met 1 parameter wat verplicht is als je die interface implementeert.
  • De laatste code is inderdaad eerder wat je zou moeten doen. Je concateneert telkens bij de tekst van dat TextField een nieuw stukje string. Als alternatief kun je ook een String rechtstreeks concateneren of StringBuilder gebruiken en dan rechtstreeks de woorden tekenen via paint met de Graphics zoals je eerst van plan was.

Ok bedankt voor feedback NeverwinterX en cool_boy_ke , ik zal straks eens opzoekwerk doen over die StringBuilder(zegt me eignelijk niets op de moment) en eens daarmee proberen een ander applet te schrijven.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan