Punkte automatisch verbinden?

Status
Nicht offen für weitere Antworten.
A

Astrid

Gast
Hallo,

ich möchte auf einer Malfläche gezeichnete Punkte automatisch durch eine Linie verbinden lassen.

Die Punkteerzeugung klappt, mir ist aber nicht ganz klar wie man über Arrays und drawLine bzw drawPloyLine die bereits gezeichneten Punkte verbinden kann. Bisher hab ich versucht jeweils ein Array dür die Punktkoordinaten und ein Array für die Linienkoordinaten zu erzeugen und dies bei einem Mouseevent (gezeichnter Punkt) ineinander zu übergeben.
Irgendwie klappt es nicht - Was mache ich flasch?

Hier der Code - danke im vorraus!

-----------------------------------------------------------------------------------------------------------------------------------------
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Cpzeich extends JFrame
{
	CFlaeche2 flaecheNeu2;          // Fläche für Darstellung der Funktionen
        int[] xPoints = new int[1000];  // x-Koordinaten Linie	
        int[] yPoints = new int[1000];  // y-Koordinaten Linie
        int nPoints = 0;                // Anzahl Punkte
	int [] m_Xpos = new int[1000];  // Mausposition
	int [] m_Ypos = new int[1000];	
	int auswahl = 0;
	
        // AUSGABE HAUPTPROGRAMM--------------------------------------------------------
	
	 public static void main (String[] args)
	        {
		Cpzeich test2 = new Cpzeich("Punktezeichner");
		test2.pack();
		test2.setSize(450,500);
		test2.setResizable(false);
		test2.show();
	        }	
         //KONSTRUKTOR-------------------------------------------------------------------
	
	Cpzeich(String titel)
	{
		super(titel);
		
		// Layout
		getContentPane().setLayout(new FlowLayout());
		// Malflaeche integrieren
		flaecheNeu2 = new CFlae[che2();
		getContentPane().add(flaecheNeu2);	
		// Schalter für Punkteingabe
		JButton Bu7 = new JButton("Punktfolge eingeben ...");
		getContentPane().add(Bu7);
		// Listenerklasse für Schliessen des Fensters anlegen;
		class CLauscher1 extends WindowAdapter
		{
		public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		}	
		// Event.Handeling für Schalter anlegen											
		class CActionLauscher implements ActionListener
		{											
		public void actionPerformed(ActionEvent e)
			{
				String label;
				
				label = e.getActionCommand();
						
					if (label.equals("Punktfolge eingeben ..."))
					{
					        
						auswahl = 1;	                      // verweis auf Punkteingabe			
					}										
			}
		}
											
		// Listener-Objekte anlegen
	
		Bu7.addActionListener(new CActionLauscher());	
		addWindowListener(new CLauscher1());  
	}
       // Zeichenfläche----------------------------------------------------------
	
	class CFlaeche2 extends Canvas
	{	
		int i= 0;
			
		// Innerere Klasse von CFlaeche 2 zum Abfangen der Mausklicks   
		class CMeinMausAdapter extends MouseAdapter
		{
			public void mousePressed(MouseEvent e)
			{		
				        // Die aktuelle Position der Maus merken und im Array für Punktkoordinaten abspeichern	
					
						m_Xpos[i+1] = e.getX();
						m_Ypos[i+1] = e.getY();
				
						// Malfläche aktualisieren
						repaint();

						//Kontrolle 	
						System.out.println("X:" + m_Xpos[i+1] );
						System.out.println("Y:" + m_Ypos[i+1] );
						
					       // ArraY hinzufügen
					       int [] xPoints = {m_Xpos[i],m_Xpos[i+1]};
					       int [] yPoints = {m_Ypos[i],m_Ypos[i+1]};
			}			
		}
	       //Konstruktor der Zeichenfläche
	        CFlaeche2()
	        {
		setBackground(Color.white);
		setForeground(Color.green);
		addMouseListener(new CMeinMausAdapter());
		}	
		
               //Paint-Methode------------------------------------------------------------------------------	
		public void paint(Graphics g)
		{
				//g.drawLine(10,10,100,100);
				
				if (auswahl == 1)
				        {	
					//Punkt bzw Pixel zeichnen
					g.setColor(Color.blue);
					// Koordinaten x,y ; Briete/Hühe; Durchmesser
					g.drawRoundRect(m_Xpos[i+1], m_Ypos[i+1], 10, 10, 10, 10 );
					g.fillRoundRect(m_Xpos[i+1], m_Ypos[i+1], 10, 10, 10 ,10);
					}
			
					g.drawPolyline(xPoints, yPoints,10);
					//g.drawPolyline(m_Xpos, m_Ypos,10);
		
								
	        }
			    
		// Fenstergrössen	
		public void update(Graphics g)
			{
        		paint(g);
			}		
		public Dimension getMinimumSize()
		{
		return new Dimension(400,400);
		}	
		public Dimension getPreferredSize()
		{
			return getMinimumSize();
		}
	}	
	
}


Edit von L-ectron-X: Codetags eingefügt.
 

Campino

Top Contributor
Im Moment weißt du alle Punkte i+1 zu, weil i=0 ist, werden alle Punkte 1 zugeordnet, überschreiben also den vorhergegangenen.

Falls es das nicht ist:

Weiße die Punkte einem Point-Array zu. Die draw sieht dann so aus:
Code:
public void paint(Graphics g) {
                        //Zeichenfläche säubern, nicht unbedingt erforderlich
			g.clearRect(0, 0, this.getWidth(), this.getHeight());
			//farbe einstellen
                        g.setColor(Color.blue);
			for (int t = 0; t <= p.length - 1; t++) { //Für jeden Punkt
				if (p[t] != null) { //nur wenn ein punkt vorhanden ist
					System.out.println("X: "+t.getX()+"/"+t.getY()); //Koordinaten ausgeben
					g.drawOval((int)p[t].getX(), (int)p[t].getY(), 10, 10); //Oval malen
				}
				if(p[t]!=null && p[t+1]!=null){ // nur wenn ein nachfolger, zu dem eine linie führen muss, vorhanden ist
					g.drawLine((int) p[t].getX(), (int) p[t].getY(),
							(int) p[t + 1].getX(), (int) p[t + 1].getY()); //Linie zum Nachfolger
				}
			}
}

Wie die definition des arrays und die mouseClicked-methode aussehen, musste u selber rauskriegen, wir sind hier schließlich nicht da, um aufgaben für andere zu lösen...

Der Konstrukter von Point:

Code:
Point(double x, double y)

EDIT:

sry, mein erster Code warf ne Nullpointerexception, deshalb hab ich ihn nochmal geändert angepasst
 
Status
Nicht offen für weitere Antworten.
Ä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
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
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
H Automatisch Folgen? Java Basics - Anfänger-Themen 1
T TextField Breite automatisch gebunden Java Basics - Anfänger-Themen 8
S Personalnummer automatisch generieren Java Basics - Anfänger-Themen 11
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
P Array wird automatisch überschrieben Java Basics - Anfänger-Themen 3
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
S Dialogfeld nach 5 Sek automatisch öffnen Java Basics - Anfänger-Themen 15
D Einer Variable automatisch Zahlen hinzuaadieren Java Basics - Anfänger-Themen 3
JavaNewbie2.0 Tausende Wörter in Arrays automatisch einfügen Java Basics - Anfänger-Themen 10
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
J Sequenz diagram automatisch erstellen / Ablaufdiagramm Java Basics - Anfänger-Themen 0
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
A Klassen welche Klassen importiert Eclipse automatisch Java Basics - Anfänger-Themen 2
N Sequenzdiagamm automatisch erstellen Java Basics - Anfänger-Themen 1
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
B Erst lesen: Automatisch Texteingabe bestätigen Java Basics - Anfänger-Themen 6
K Methoden Automatisch nach unten scrollen Java Basics - Anfänger-Themen 2
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
M Automatisch hoch zählen Java Basics - Anfänger-Themen 8
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
R eine Methode automatisch wiederholen Java Basics - Anfänger-Themen 12
H Regulären Ausdruck automatisch erstellen Java Basics - Anfänger-Themen 5
Viktormk java - int wert automatisch einlesen Java Basics - Anfänger-Themen 8
S Methode automatisch invoked Java Basics - Anfänger-Themen 4
E JTextArea beim Schreiben automatisch vergrößern Java Basics - Anfänger-Themen 7
S OOP Objekte automatisch erzeugen Java Basics - Anfänger-Themen 13
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
D Automatisch zweidimensionale Arrays durchiterieren Java Basics - Anfänger-Themen 2
D Letztes Änderungs-Datum als Version automatisch eintragen Java Basics - Anfänger-Themen 5
A Downcast automatisch? Java Basics - Anfänger-Themen 17
T methode mehrfach automatisch ausfuehren Java Basics - Anfänger-Themen 6
M Vererbung Objekt automatisch einem Set zuordnen... Java Basics - Anfänger-Themen 7
A Input/Output Datei automatisch erstellen. Java Basics - Anfänger-Themen 29
T Varibalen automatisch in Schleife erstellen oder anderen Lösungsvorschlag Java Basics - Anfänger-Themen 18
ruutaiokwu properties values automatisch escapen ??? Java Basics - Anfänger-Themen 3
J eclipse kommentar nicht automatisch löschen Java Basics - Anfänger-Themen 3
T Datenbank automatisch erzeugen beim ersten Start Java Basics - Anfänger-Themen 6
M JFrame automatisch ausrichten Java Basics - Anfänger-Themen 3
G Variablen automatisch erstellen.. Java Basics - Anfänger-Themen 4
J Dateien automatisch per Mail versenden Java Basics - Anfänger-Themen 3
G Ampel automatisch umschalten Java Basics - Anfänger-Themen 18
E Mehrdimensionales Array automatisch befüllen Java Basics - Anfänger-Themen 9
P OOP Automatisch neue Objekte erstellen Java Basics - Anfänger-Themen 14
S Eingabe über Scanner einlesen und automatisch beenden Java Basics - Anfänger-Themen 11
M Datei automatisch erstellen Java Basics - Anfänger-Themen 5
H zustände speichern und beim erneuten programmstart zustände automatisch laden Java Basics - Anfänger-Themen 26
F JAVA_HOME automatisch setzen? Java Basics - Anfänger-Themen 2
X Programm beim Systemstart automatisch ausführen Java Basics - Anfänger-Themen 2
M String und Int Werte automatisch erstellen Java Basics - Anfänger-Themen 5
S UML mit Eclipse automatisch erstellen Java Basics - Anfänger-Themen 5
M Threads automatisch erzeugen Java Basics - Anfänger-Themen 10
X Errechte Werte automatisch in einem Array speichern Java Basics - Anfänger-Themen 11
T Variablennamen automatisch erstellen Java Basics - Anfänger-Themen 6
G Sonderzeichen automatisch ändern lassen Java Basics - Anfänger-Themen 23
J ImageIcon im JLabel automatisch resizen. Java Basics - Anfänger-Themen 6
J Automatisch Button drücken/Event ausführen? Java Basics - Anfänger-Themen 6
N Programm automatisch schließen Java Basics - Anfänger-Themen 3
M Swing Anwendung - boolean schaltet automatisch auf true Java Basics - Anfänger-Themen 2
L Lokale Variablen automatisch durch Schleife erzeugen Java Basics - Anfänger-Themen 2
L Sonderzeichen automatisch escapen. Java Basics - Anfänger-Themen 7
G JSP-Seite automatisch schließen Java Basics - Anfänger-Themen 4
G Eclipse startet automatisch Fenster. Java Basics - Anfänger-Themen 4
S Attribut beim erzuegen eines Objektes automatisch erhöhen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben