Punkte im Java-Applet verbinden

julius92

Mitglied
Hallo Forum,
ich möchte das Applet Triangle zum Zeichnen eines Dreiecks implementieren.
Mit drei Mausklicks sollen die drei Eckpunkte eines Dreiecks durch den Benutzer festgelegt werden.
Danach soll das entsprechende Dreieck gezeichnet werden.
Ein erneuter Mausklick soll das Dreieck wieder löschen, so dass anschließend wieder ein neues Dreieck gemalt werden kann.


Leider wird noch nichts gezeichnet. Habt ihr Ideen wo meine Fehler liegen?

Vielen Dank im Voraus!

Java:
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;



public class Triangle extends javax.swing.JApplet implements MouseListener {

	final int MAXLINES = 3;
	Point starts[] = new Point[MAXLINES]; // Startpunkte
	Point ends[] = new Point[MAXLINES]; // Endpunkte
	Point anchor; // Koordinaten Klick
	int clickcount = 0; // Zähler Klicks

	public void init() {
		addMouseListener(this);

	}

	public void mouseClicked(MouseEvent evt) {

		if (clickcount < MAXLINES) {

			anchor = new Point(evt.getX(), evt.getY());
			addline(evt.getX(), evt.getY());

			System.out.println("X: " + evt.getX() + " Y: " + evt.getY());
		}

		else
			System.out.println("Too many clicks.");
	}

	void addline(int x, int y) {
		starts[clickcount] = anchor;
		ends[clickcount] = new Point(x, y);
		anchor = null;
		clickcount++;
		repaint();
	}

	public void paint(Graphics g) {
		super.paint(g);

		for (int i = 0; i < clickcount; i++) {
			g.drawLine(starts[i].x, starts[i].y, ends[i].x, ends[i].y);
		}

	}

	public void mouseMoved(MouseEvent evt) {
	}

	public void mouseEntered(MouseEvent evt) {
	}

	public void mouseExited(MouseEvent evt) {
	}

	public void mouseDragged(MouseEvent evt) {

	}

	public void mousePressed(MouseEvent evt) {

	}

	public void mouseReleased(MouseEvent evt) {

	}
}


Die Ausgabe funktioniert soweit schonmal:

Java:
X: 48 Y: 45
X: 147 Y: 55
X: 100 Y: 93
Too many clicks.
 

njans

Top Contributor
Wenn du
Java:
public void paint(Graphics g) {
        super.paint(g);
 
        g.setColor(Color.BLACK);
        for (int i = 0; i < clickcount; i++) {
            g.drawLine(starts[i].x, starts[i].y, ends[i].x, ends[i].y);
        }
 
    }

schreibst, dann siehst du auch, dass die Punkte gezeichnet werden. Ich sage hier Punkte, weil bei dir start und end die selben Werte enthalten. Du brauchst nur ein Array und wenn da mehr als 1 Element drin ist, dann verbindest du Punkte mit einer Linie.
 

julius92

Mitglied
okay, danke soweit mal.

ich bin auf jeden Fall ein Stück weiter gekommen. Der Algorithmus macht mir aber etwas zu schaffen. Wie bekomme ich es hin, dass die letzte Linie mit dem Anfangspunkt verbunden wird?

Im Anhang findet ihr das gestartete Applet!

Hier mein aktueller Code:

Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Triangle extends javax.swing.JApplet implements MouseListener {

	final int MAXLINES = 3;
	Point starts[] = new Point[MAXLINES]; // Startpunkte
	Point anchor; // Koordinaten Klick
	int clickcount = 0; // Zähler Klicks

	public void init() {
		addMouseListener(this);

	}

	public void mouseClicked(MouseEvent evt) {

		if (clickcount < MAXLINES) {

			anchor = new Point(evt.getX(), evt.getY());
			addline(evt.getX(), evt.getY());

			System.out.println("X: " + evt.getX() + " Y: " + evt.getY());
		}

		else
			System.out.println("Too many clicks.");
	}

	void addline(int x, int y) {
		starts[clickcount] = anchor;
		clickcount++;
		repaint();
	}

	public void paint(Graphics g) {
		if (clickcount == MAXLINES) {
			super.paint(g);
			g.setColor(Color.red);
			for (int i = 0; i < MAXLINES-1; i++) {
				g.drawLine(starts[i].x, starts[i].y, starts[i + 1].x,
						starts[i + 1].y);

			}

		}
	}

	public void mouseMoved(MouseEvent evt) {
	}

	public void mouseEntered(MouseEvent evt) {
	}

	public void mouseExited(MouseEvent evt) {
	}

	public void mouseDragged(MouseEvent evt) {

	}

	public void mousePressed(MouseEvent evt) {

	}

	public void mouseReleased(MouseEvent evt) {

	}
}
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    13,2 KB · Aufrufe: 29

njans

Top Contributor
Du musst dann doch nur den ersten Punkt nehmen und den mit dem letzten verbinden:
Java:
g.drawLine(starts[i].x, starts[i].y, starts[starts.length -1].x, starts[starts.length -1].y);

Probleme kriegst du nur dann, wenn da ein Element null ist. Aber das kannst du ja mittels abfrage behandeln
 

julius92

Mitglied
klasse! Nun kann ich ein Dreieck zeichnen! Habe es mit einer eigenen Lösung gelöst.

JEtzt meine letzte Frage: Warum kann ich nach den 3 Klicks kein neues Triangle zeichnen, obwohl es mit dem Code eigentlich funktionieren müsste?

Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Triangle extends javax.swing.JApplet implements MouseListener {

	final int MAXLINES = 3;
	Point starts[] = new Point[MAXLINES]; // Startpunkte
	Point anchor; // Koordinaten Klick
	int clickcount = 0; // Zähler Klicks

	public void init() {
		addMouseListener(this);

	}

	public void mouseClicked(MouseEvent evt) {

		if (clickcount > MAXLINES) {
			System.out.println("Too many clicks, create a new Triangle.");
			clickcount = 0;
			anchor = new Point(evt.getX(), evt.getY());
			repaint();

		}

		else {
			anchor = new Point(evt.getX(), evt.getY());
			addline(evt.getX(), evt.getY());

			System.out.println("X: " + evt.getX() + " Y: " + evt.getY());

		}
	}

	void addline(int x, int y) {
		starts[clickcount] = anchor;
		clickcount++;
		anchor = null;
		repaint();
	}

	public void paint(Graphics g) {

		if (clickcount == MAXLINES) {
			super.paint(g);

			g.setColor(Color.red);
			for (int i = 0; i < MAXLINES - 1; i++) {
				g.drawLine(starts[i].x, starts[i].y, starts[i + 1].x,
						starts[i + 1].y);

			}

			for (int i = MAXLINES - 1; i <= MAXLINES;) {
				g.drawLine(starts[MAXLINES - 1].x, starts[MAXLINES - 1].y,
						starts[i - MAXLINES + 1].x, starts[i - MAXLINES + 1].y);
			}
		}
	}

	public void mouseMoved(MouseEvent evt) {
	}

	public void mouseEntered(MouseEvent evt) {
	}

	public void mouseExited(MouseEvent evt) {
	}

	public void mouseDragged(MouseEvent evt) {

	}

	public void mousePressed(MouseEvent evt) {

	}

	public void mouseReleased(MouseEvent evt) {

	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
K Klassen Klasse erstellen, die Punkte eines Koordinatensystems repräsentiert? Java Basics - Anfänger-Themen 3
B Markieren einzelner Punkte in JFreeChart Java Basics - Anfänger-Themen 1
L0MiN Erste Schritte Neue Punkte zu einer Map hinzufügen und dauerhaft speichern? Java Basics - Anfänger-Themen 4
M Was bedeuten die Drei Punkte in einem Methodenkopf? Java Basics - Anfänger-Themen 3
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
P Punkte anhand 3. Koordinate vergleichen Java Basics - Anfänger-Themen 3
H Punkte werden falsch verbunden Java Basics - Anfänger-Themen 6
M Double Punkte Zeichnen Java Basics - Anfänger-Themen 7
T mehrere Punkte zeichnen ohne löschung Java Basics - Anfänger-Themen 4
J Punkte hinzufügen Tabelle Java Basics - Anfänger-Themen 5
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
O Punkte auf einem Kreis "wandern" lassen Java Basics - Anfänger-Themen 3
M Polygon Punkte im Uhrzeigersinn sortieren Java Basics - Anfänger-Themen 2
0 Auf Karte in Planquadrate Punkte zeichnen? Java Basics - Anfänger-Themen 2
B Bitte um Hilfe es geht um Array + Punkte wie Dreieck,Fläche etc. Java Basics - Anfänger-Themen 12
T Punkte nicht löschen Java Basics - Anfänger-Themen 14
K Punkte verschieben Java Basics - Anfänger-Themen 6
M Abstand 2er Punkte (Klassen) Java Basics - Anfänger-Themen 11
J punkte verschwinden beim neuzeichnen neuer punkte Java Basics - Anfänger-Themen 11
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
Z Punkte, Koordinanten, Geraden zeichnen lassen Java Basics - Anfänger-Themen 8
V String überprüfen, nur Punkte und Zahlen erlaubt Java Basics - Anfänger-Themen 7
P Anzahl der Punkte in einer IP Adresse zählen? Java Basics - Anfänger-Themen 20
B 2D Punkte erstellen und ihre Länge berechnen/Problem this. Java Basics - Anfänger-Themen 3
J Punkte Noten zuweisen Java Basics - Anfänger-Themen 6
G Kann man in einem Dokument alle Kommas in Punkte umwandeln? Java Basics - Anfänger-Themen 10
M Datumsausgabe als String ohne Punkte erzeugen! Java Basics - Anfänger-Themen 5
T Matrix - äußerste Punkte pro Zeile Java Basics - Anfänger-Themen 7
A Punkte automatisch verbinden? Java Basics - Anfänger-Themen 3
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben