Vorige knopje werkt niet

Status
Niet open voor verdere reacties.

stienoo

Gebruiker
Lid geworden
31 dec 2007
Berichten
315
Ik ben een beslising boom aan het maken, maar het "vorige" knopje wilt het niet doen.
Ik denk dat het opzig voor zig spreekt, ik hoop dat iemand weet wat ik fout doe.

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Puistjes extends JFrame {

  public static void main( String args[] ) {
    JFrame frame = new Puistjes();
    frame.setSize( 550, 200 );
    frame.setLocation(300,150);
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setTitle( "Puistje" );
    JPanel paneel = new PuistjesPaneel();
    frame.setContentPane( paneel );
    frame.setVisible( true );
  }
}


class PuistjesPaneel extends JPanel {
	private JButton ja, nee, vorige;
	private String vraag="Is er reeds een behandeling ingesteld?",vraag2="", vraag3="";
	private int plaats=0,x[]={100,0,0},y[] ={100,0,0};
	
  public PuistjesPaneel() {
	  
	  ja =(new JButton("  ja  "));
	  ja.addActionListener(new Ja());
	  nee =(new JButton("  nee  "));
	  nee.addActionListener(new Nee());
	  vorige =(new JButton("  vorige  "));
	  vorige.addActionListener(new Vorige());
	  
	  
	  add(ja);
	  add(nee);
	  add(vorige);

	  
  }
  public void paintComponent(Graphics g){
	  super.paintComponent(g);

	  
	  g.drawString (vraag, x[0], y[0]);
	  g.drawString(vraag2, x[1], y[1]);
	  g.drawString(vraag3, x[2], y[2]);
	  g.drawString(""+plaats,20,20);
      
  }
  
  class Vorige implements ActionListener{
	  public void actionPerformed(ActionEvent e){
		  plaats--;
		  if(plaats==4){
			  vraag="Zwarte puntjes (meeëters)?";
			  x[0]=100;
			  y[0]=100;
			  vraag2="";
			  x[1]=20;
			  y[1]=120;
			  vraag3="";
			  x[2]=20;
			  y[2]=140;
			  plaats++;
			  repaint();
		  }
		  else{
			  if(plaats==3){
				  vraag="Witte puntjes?";
				  x[0]=100;
				  y[0]=100;
				  vraag2="";
				  x[1]=20;
				  y[1]=120;
				  vraag3="";
				  x[2]=20;
				  y[2]=140;
				  plaats++;
				  repaint();
			  }
			  else{
				  if(plaats==2){
					  vraag="Kysten uitgebreide letsels?";
					  x[0]=100;
					  y[0]=100;
					  vraag2="";
					  x[1]=20;
					  y[1]=120;
					  vraag3="";
					  x[2]=20;
					  y[2]=140;
					  plaats++;
					  repaint();
				  }
				  else{
					  if(plaats==1){
						  vraag="De huid analyseren om het type acne te identificeren (belangrijkste letsels).";
						  x[0]=100;
						  y[0]=100;
						  vraag2="";
						  x[1]=20;
						  y[1]=120;
						  vraag3="";
						  x[2]=20;
						  y[2]=140;
						  plaats++;
						  repaint();
					  }
					  else{
						  if (plaats==0){
							  vraag="Welke zijn uw gewoonten op het gebied van hygiëne en huidverzorging?";
							  vraag2="Gebruikt u bepaalde produkten?";
							  x[1]=100;
							  y[1]=120;
							  plaats=1;
							  repaint();
						  }
					  }
				  }
			  }
		  }
	  }
  }
  
  class Ja implements ActionListener{
	  public void actionPerformed(ActionEvent e){
		  if (plaats==0){
			  vraag="- De behandeling identificeren.";
			  x[0]=100;
			  y[0]=100;
			  vraag2="- Aangepaste hygiënische maatregelen aanbevelen.";
			  x[1]=100;
			  y[1]=120;
			  vraag3="- Bevorderde factoren vermijden.";
			  x[2]=100;
			  y[2]=140;
			  plaats=10;
		  }
		  if (plaats==1){
			  vraag="- De producten identificeren en nagaan of de keuze gerechtvaardigd is.";
			  x[0]=20;
			  y[0]=100;
			  vraag2="- De aanbevelingen op het gebied van hygiëne, verzorging, te vermijden gedrag, enz herhalen.";
			  x[1]=20;
			  y[1]=120;
			  vraag3="- Bevorderde factoren vermijden.";
			  x[2]=20;
			  y[2]=140;
			  plaats=10;
		  }
		  if (plaats==3){
			  vraag="Lokale verzorging: Aanbevelingen op het gebied van hygiëne en verzorging.";
			  x[0]=100;
			  y[0]=100;
			  vraag2="Zig wenden tot  een dermatoloog.";
			  x[1]=100;
			  y[1]=120;
			  vraag3="";
			  x[2]=100;
			  y[2]=140;
			  plaats=10;
		  }
		  else{
			  if (plaats==4){
				  vraag="Lokale verzorging: Aanbeveling op het gebied van hygiëne en verzorging,";
				  x[0]=100;
				  y[0]=100;
				  vraag2="te vermijden gedrag, enz. herhalen.";
				  x[1]=100;
				  y[1]=120;
				  vraag3="";
				  x[2]=100;
				  y[2]=140;
				  plaats=10;
			  }
			  else{
				  if (plaats==5){
					  vraag="Lokale verzorging: Aangepaste hygiënische maatregelen, specifieke verzorging, keratolytica";
					  x[0]=40;
					  y[0]=100;
					  vraag2="+";
					  x[1]=40;
					  y[1]=120;
					  vraag3="De aanbevelingen herhalen (te vermijden of aanbevolen produkten en houdingen)";
					  x[2]=40;
					  y[2]=140;
					  plaats=10;
				  }
			  }
		  }
		  repaint();
	  }
  }
  
  class Nee implements ActionListener{
	  public void actionPerformed(ActionEvent e){
		  if (plaats==0){
			  vraag="Welke zijn uw gewoonten op het gebied van hygiëne en huidverzorging?";
			  vraag2="Gebruikt u bepaalde produkten?";
			  x[1]=100;
			  y[1]=120;
			  plaats=1;
		  }
		  else{
		  if (plaats==1){
			  vraag="De huid analyseren om het type acne te identificeren (belangrijkste letsels).";
			  x[0]=100;
			  y[0]=100;
			  vraag2="";
			  x[1]=20;
			  y[1]=120;
			  vraag3="";
			  x[2]=20;
			  y[2]=140;
			  plaats++;
		  }
		  else{
			  if (plaats==2){
				  vraag="Kysten uitgebreide letsels?";
				  x[0]=100;
				  y[0]=100;
				  vraag2="";
				  x[1]=20;
				  y[1]=120;
				  vraag3="";
				  x[2]=20;
				  y[2]=140;
				  plaats++;
			  }
			  else{
				  if (plaats==3){
					  vraag="Witte puntjes?";
					  x[0]=100;
					  y[0]=100;
					  vraag2="";
					  x[1]=20;
					  y[1]=120;
					  vraag3="";
					  x[2]=20;
					  y[2]=140;
					  plaats++;
				  }
				  
			  else{
				  if (plaats==4){
					  vraag="Zwarte puntjes (meeëters)?";
					  x[0]=100;
					  y[0]=100;
					  vraag2="";
					  x[1]=20;
					  y[1]=120;
					  vraag3="";
					  x[2]=20;
					  y[2]=140;
					  plaats++;
				  }
				  
			  }
			  }
			  }
			  }
		  repaint();
	  }
  }
  
}
 
stienoo,

Als je een if elseif wil gebruiken dan kan dat het beste in de volgende format:

Code:
if(i == 0}{
}
else if(i == 1){
}
else if(i == 2){
}

Daarnaast zou je ook gebruik kunnen maken van een switch/case
Die ziet er zo uit:

Code:
public void actionPerformed(ActionEvent e){
	plaats--;
	switch(plaats){
	case 0: {
			vraag="Welke zijn uw gewoonten op het gebied van hygiëne en huidverzorging?";
			vraag2="Gebruikt u bepaalde produkten?";
			x[1]=100;
			y[1]=120;
			plaats=1;
			break;
			}
			
	case 1: {
			vraag="De huid analyseren om het type acne te identificeren (belangrijkste letsels).";
			x[0]=100;
			y[0]=100;
			vraag2="";
			x[1]=20;
			y[1]=120;
			vraag3="";
			x[2]=20;
			y[2]=140;
			plaats++;
			break;
			}
			
	case 2: {
			vraag="Kysten uitgebreide letsels?";
			x[0]=100;
			y[0]=100;
			vraag2="";
			x[1]=20;
			y[1]=120;
			vraag3="";
			x[2]=20;
			y[2]=140;
			plaats++;
			break;
			}
			
	case 3: {
			vraag="Witte puntjes?";
			x[0]=100;
			y[0]=100;
			vraag2="";
			x[1]=20;
			y[1]=120;
			vraag3="";
			x[2]=20;
			y[2]=140;
			plaats++;
			break;
			}
			
	case 4: {
			vraag="Zwarte puntjes (meeëters)?";
			x[0]=100;
			y[0]=100;
			vraag2="";
			x[1]=20;
			y[1]=120;
			vraag3="";
			x[2]=20;
			y[2]=140;
			plaats++;
			break;
			}
	default : break;
	}
	repaint();
}

Probeer het daar eens mee.

Als dat niet lukt, dan zou je wel even een wat duidelijkere uitleg mogen geven wat het programma precies moet doen. :)
 
Nee, het werkt nog steeds niet, de bedoeling is om een ja/nee vraag te stellen, als je ja antwoord, word er weer een vraag gesteld, maar als je nee antwoord word er een andere vraag gesteld, zo hangen de vragen af van wat je vooraf hebt geantwoord (en zo moet je dus tot de juiste oplossing komen).
In dit geval gaat het over hoe je puistjes moet aanpakken.
 
Het gaat o.a. hier fout:

Code:
			  plaats=10;

in de Class "Ja"
Daardoor moet je 5 of 6x op de vorige knop drukken voordat je eens een keer op een vorige vraag komt.
 
Ja, dat was ik van plan om aan te passen, ik zou het dan ongeveer zo doen:

Code:
if(plaats==10)
{
plaats=0;
}
(Of iets anders, maar je snap het principe)

Maar, als het al zou werken als je bv. 2 keer nee hebt geklikt zou ik al blij zijn.
Momenteel lukt het ook niet zo als ik hier boven heb gezegt.
 
Ik voel hier een bepaalde pattern opborrelen:


http://www.java2s.com/Code/Java/Design-Pattern/State-Pattern.htm
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan