Coursework JAVA

nilush

Grünschnabel
Hallöchen,

ich habe jetzt angefangen Java zu studieren und zwar in London. Ich habe nun als Coursework eine ziemlich simple Aufgabe bekommen, denk ich mal. Aber ich hab da irgendwo nen Fehler drin, den ich nich finden tue.

Die Aufgabe besteht darin, ein Applet zu programmieren mit vier Buttons, und wenn man auf die Gleichen klickt werden verschiedene Shapes angezeigt. Mein Fehler sieht nun so aus, dass ich die Buttons nur von rechts nach links betätigen, wenn ich es von der anderen Seite aus mache, zeigt er mit nur die erste Shape an. Ich kann also sozusagen die Buttons nich mehrmals drücken.

Also bitte helft mir, ich poste hier mal den Code.

Code:
/*
 * InteractiveApplet
 */
 
import java.awt.*;
import java.applet.*;
import java.lang.*;
import java.awt.event.*;

public class InteractiveApplet extends Applet implements ActionListener {
	
	private Button circle, rectangle, text, triangle;
	private boolean vcircle,vrectangle,vtext,vtriangle = false;
	private double sideA = 0;
	private double sideB = 0;
	private double sideC = 100;
	private double height = 100;
	private double perimeter = 0;
			
	public void init() {
		
		circle = new Button ("CIRCLE");
		add(circle);
		circle.addActionListener(this);
		
		rectangle = new Button ("RECTANGLE");
		add(rectangle);
		rectangle.addActionListener(this);
		
		text = new Button ("TEXT");
		add(text);
		text.addActionListener(this);
		
		triangle = new Button ("TRIANGLE");
		add(triangle);
		triangle.addActionListener(this);
		
	}

	public void paint(Graphics g) {
		
		if (vcircle == true){
			g.setColor(Color.blue);
			g.drawOval (50,50,100,100);
		}
			else
		
			if (vrectangle == true){
				g.setColor(Color.red);
				g.drawRect (50,50,100,100);
			}
				else
		
				if (vtext == true){
					g.setColor(Color.black);
					g.drawString ("My program is working.",100,100);
				}
					else
		
					if (vtriangle == true){
						g.setColor(Color.green);
						g.drawLine(100,200,150,100);
						g.drawLine(200,200,150,100);
						g.drawLine(100,200,200,200);
						perimeter = calculation();
						g.drawString("The perimeter of the triangle is " +perimeter+ ".",100,250);
					}
	}
	
	private double calculation(){
		sideA = Math.sqrt(Math.pow(height,2) + Math.pow(sideC/2,2));
		sideB = Math.sqrt(Math.pow(height,2) + Math.pow(sideC/2,2));
		return perimeter = sideA + sideB + sideC;		
	}							
	
	public void actionPerformed(ActionEvent e){
	
		if (e.getSource () == circle)
			vcircle = true;
					
		if (e.getSource () == rectangle)
			vrectangle = true;
			
		if (e.getSource () == text)
			vtext = true;
		
		if (e.getSource () == triangle)
			vtriangle = true;
		
		repaint();
	}

}

Vielen Dank schonmal im vorraus

nilush ;-)
 
Hallo,

es liegt daran, das du die Variablen vcircle, vrectangle, vtext und vtriangle nicht zurücksetzt. Sobald du z.B. einmal auf den Button "CIRCLE" gedrückt hast, ist die Variable vcircle = true und somit wird in der paint-Methode immer der Kreis gezeichnet, egal welchen Button du drückst.

Setzte einfach alle Variablen auf false, am besten zu Beginn der actionPerformed-Methode.
 
Zuletzt bearbeitet:
Zurück