per "update" ein Bild Strich für Strich "male

Status
Nicht offen für weitere Antworten.

Aurora

Mitglied
Hallo zusammen!

Hätte da ein Problemchen mit einer Übungsaufgabe...
es sollen mehrere Striche gezeichnet werden, die ein einfaches Bild ergeben. Beispielsweise ein Haus.
Ist ja mal von der Seite aus kein Problem, ABER jetzt soll es irgendwie per "update" angestellt werden, dass bei jedem erneuten Klicken in den Browser ein weiterer Strich gezeichnet wird bis das Bild fertig ist.
Es kann so gemacht werden, dass immer ein strich gezeichnet wird oder dass erst einer, dann 2 dann 3 usw. gezeichnet werden. Wenn es fertig gezeichnet ist kann es wieder von vorne losgehen oder aber einfach aufhören.


Hat da jemand einen Tipp für mich?

Muss ich das mit einer Schleife machen, die die Anzahl der Striche hochzählt?
Aber wenn ja, wie wird das dann gezeichnet wenn ein Update erfolgt?


Hier habe ich mal die "Koordinaten" für das Haus:


Code:
        g.drawLine(20, 100, 20, 200);	
  		g.drawLine(20, 100, 120,200);
  		g.drawLine(120, 100, 120, 200);
  		g.drawLine(70, 0, 120, 100);
  		g.drawLine(20, 100, 70, 0);
  		g.drawLine(20, 100, 120, 100);
  		g.drawLine(20, 200, 120, 100);
  		g.drawLine(20, 200, 120, 200);


Ich freue mich über jeden Vorschlag!
Gruß Aurora
 
S

SlaterB

Gast
erstelle dir eine Klasse Linie mit 2x x+y,
die 8 Linien kommen in eine Liste,

dann brauchst du noch eine Exemplarvariable anzahl, die per Buttonklick erhöht wird,

in der paint malst du dann je nach Anzahl entsprechend viele Elemente aus der Liste
 

Aurora

Mitglied
das ist mir leider nicht klar, was du damit meinst, aber ich glaube das hast du nicht ganz verstanden...

wenn ich aus dem Browser irgendwo anders hinklicke und wieder in den Browser hinein, dann soll der nächste strich gezeichnet werden... ich habe aber keine Ahnung wie ich das mit dem update verbinden soll, also dass das Programm immer einen neuen Strich malt - aber ohne einen Button.

Hast du noch eine andere Idee - oder jemand sonst?
Gruß
 

masta // thomas

Bekanntes Mitglied
Code:
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class LineDrawer extends JFrame {

	private static final long serialVersionUID = 1L;

	public LineDrawer() {
		super();
		setBounds(100, 100, 500, 375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		createComponents();
	}
	
	private void createComponents()
	{
		List<Line> lines = new ArrayList<Line>();
		lines.add(new Line(20, 100, 20, 200));
		lines.add(new Line(20, 100, 120,200));
		lines.add(new Line(120, 100, 120, 200));
		lines.add(new Line(70, 0, 120, 100));
		lines.add(new Line(20, 100, 70, 0));
		lines.add(new Line(20, 100, 120, 100));
		lines.add(new Line(20, 200, 120, 100));
		lines.add(new Line(20, 200, 120, 200));
		add(new LinePanel(lines));
	}
	
	class LinePanel extends JPanel
	{
		private static final long serialVersionUID = 1L;
		
		private List<Line> lines;
		private int linesToDraw;
		
		public LinePanel(List<Line> lines)
		{
			this.lines = lines;
			linesToDraw = 0;
			addMouseListener(new MouseAdapter()
			{
				@Override
				public void mouseClicked(MouseEvent e) {
					super.mouseClicked(e);
					nextLine();						
				}
			});
		}
		
		private void nextLine()
		{
			linesToDraw++;
			repaint();
			if(linesToDraw > lines.size())
				linesToDraw = 0;
		}
		
		private void drawLines(Graphics g)
		{
			for(int i = 0; i < linesToDraw; i++)
			{
				Line currentLine = lines.get(i);
				g.drawLine(currentLine.getX1(), currentLine.getY1(), currentLine.getX2(), currentLine.getY2());
			}
		}
		
		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			drawLines(g);
		}
	}
	
	class Line
	{
		private int x1;
		private int y1;
		private int x2;
		private int y2;
		
		public Line(int x1, int y1, int x2, int y2)
		{
			setX1(x1);
			setY1(y1);
			setX2(x2);
			setY2(y2);
		}

		public int getX1() {
			return x1;
		}

		public void setX1(int x1) {
			this.x1 = x1;
		}

		public int getY1() {
			return y1;
		}

		public void setY1(int y1) {
			this.y1 = y1;
		}

		public int getX2() {
			return x2;
		}

		public void setX2(int x2) {
			this.x2 = x2;
		}

		public int getY2() {
			return y2;
		}

		public void setY2(int y2) {
			this.y2 = y2;
		}
	}
	
	public static void main(String args[]) {
		LineDrawer frame = new LineDrawer();
		frame.setVisible(true);
	}
}
 

Aurora

Mitglied
Ich verbeuge mich vor deinem Können! Das bewundere ich wirklich sehr und ich bedanke mich vielmals. :applaus:
Super wie das klappt!


Leider Leider Leider ist es ja nur viel zu kompliziert - solche hohen Ansprüche haben wir ja noch gar nicht :oops: es muss gar nicht in einem Windows-Fenster dargestellt werden, sondern als Applet im Browser. Also wenn ich auf den Desktop klicke und wieder in den Browser - dann erscheint ein Strich....


Ich habe nur so viel:


Code:
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;

public class Haus extends Applet {
  	public void paint (Graphics g) {
  		
  		
  		Color rot = new Color(255, 0, 0);
  		g.setColor(rot);
  		g.drawLine(20, 100, 20, 200);	
  		g.drawLine(20, 100, 120,200);
  		g.drawLine(120, 100, 120, 200);
  		g.drawLine(70, 0, 120, 100);
  		g.drawLine(20, 100, 70, 0);
  		g.drawLine(20, 100, 120, 100);
  		g.drawLine(20, 200, 120, 100);
  		g.drawLine(20, 200, 120, 200);

	}
}

und ich denke (so in meinem jugentlichen Leichtsinn :lol: ) dass ich dieses paint irgendwie durch das update erstetzen muss... und wohl noch irgendwie eine for Schleife, ein if und else oder so
 

Quaxli

Top Contributor
Wenn Dir schon jemand die Hausaufgabe macht, kannst Du Dich doch wenigsten selber mal bemühen und das Frame in ein Applet umbiegen. So schwer ist das ja nun nicht.
 

Aurora

Mitglied
Also ich bin ja noch ein absoluter Anfänger und das was Thomas programmiert hat ist auch super toll - ich weiß das auf jeden Fall zu schätzen, dass er sich die Zeit genommen hat und die Aufgabe clever gelöst hat. Das Problem ist einfach, dass ja die Hälfte der Funktionen, die er angewendet hat noch gar nicht in dem Kurs vorkamen....

Es geht mir eigentlich auch nur darum, herauszufinden, wie ich es anstelle (ich denke so muss man es ungefär machen) dass dieses "update" sich selbst steigert - aber wenn ich eine for schleife benutze z.B macht er ja die Schleife durch und fertig. Es muss ja irgendwie so gemacht werden (alles nur spekulation) dass durch das update eine Variable hochgezählt wird, die dann z.B. per switch oder if else die Linien zeichnen.

Also irgendwie so, dass wenn der Wert meinetwegen 1 ist, wird die erste Linie gezeichet, und wenn der Wert 2 ist werden die ersten beiden Linien gezeichnet und so weiter.

Es geht mir sicher nicht darum, dass mir jemand die ganze Aufgabe hinpinselt, aber ich komm mit diesem Update nicht klar... ich versteh nicht wie ich es verwenden kann, also bisher kam immer ein leeres Feld, also ich habe es nicht geschafft, dass dieses Ding überhaupt was zeichnet, kann das dieses "update" eigentlich überhaupt oder muss ich wieder in das update() ein paint reinschreiben?
also irgendwie so:

public void update (paint????)


Also - kann das jemand vielleicht mal erläutern würde mich riesig freuen!

Gruß
 
S

SlaterB

Gast
Rekord für Anzahl des Wortes 'update' in einem Posting..

das Konzept mit der Liste und dem paint habe ich ja auch so vorgegeben, das ist völlig unabhängig von Applet oder JFrame oder sonstwas, das kannst du alles so übernehmen
(und hat garantiert nicht, in keiner Weise, überhaupt nicht, nicht mal ein bisschen mit update zu tun!)

-----

so einzig interessant ist nun noch, wie du in deinem Applet irgendwie darauf reagieren kannst,
dass der User mit der Maus klickt oder sonst irgendwas,
sowas musst du schon wissen wenn du Applets programmieren willst,
ich persönlich wüßte es z.B. gar nicht,

wann immer so ein Ereignis stattfindet (du nennst es 'bei jedem erneuten Klicken in den Browser ')
dann musst du die Anzahl der zu zeichnenden Linien erhöhen,

das kann man evtl. update nennen, hat aber auf jeden Fall nichts mit dem paint zu tun,
der Vorschlag "update (paint????) " macht einen ziemlich schlechten Eindruck, wenn ich dich nicht ganz falsch verstanden habe,


so, wenn das nun dein Problem ist, dann stelle ganz ruhig und sachlich eine simple Frage
"wie kann ich in einem Applet auf einen Mausklick reagieren"
dann wird dir vielleicht jemand antworten der es weiß (ich nicht)
evtl. in einem neuen Thema wenn hier nichts mehr kommt

solche Grundlagen solltest du allerdings auch in deinem Lehrbuch finden
 

masta // thomas

Bekanntes Mitglied
Hallo Aurora,

stelle deine Fragen bitte immer ins Forum, dafür ist es da. Von privaten Nachrichten hat außer dir keiner was.
Leite einfach von Applet ab und gut ist.

Code:
package de.mcs.test.graphics;

import java.applet.Applet;

public class LineDrawer extends Applet {

	private static final long serialVersionUID = 1L;

	public LineDrawer() {
		super();
		createComponents();
	}
	
	private void createComponents()
	{
		List<Line> lines = new ArrayList<Line>();
		lines.add(new Line(20, 100, 20, 200));
		lines.add(new Line(20, 100, 120,200));
		lines.add(new Line(120, 100, 120, 200));
		lines.add(new Line(70, 50, 120, 100));
		lines.add(new Line(20, 100, 70, 50));
		lines.add(new Line(20, 100, 120, 100));
		lines.add(new Line(20, 200, 120, 100));
		lines.add(new Line(20, 200, 120, 200));
		add(new LinePanel(lines));
	}
	
	class LinePanel extends JPanel
	{
		private static final long serialVersionUID = 1L;
		
		private List<Line> lines;
		private int linesToDraw;
		
		public LinePanel(List<Line> lines)
		{
			setPreferredSize(new Dimension(400, 400));
			this.lines = lines;
			linesToDraw = 0;
			addMouseListener(new MouseAdapter()
			{
				@Override
				public void mouseClicked(MouseEvent e) {
					super.mouseClicked(e);
					nextLine();						
				}
			});
		}
		
		private void nextLine()
		{
			linesToDraw++;
			repaint();
			if(linesToDraw > lines.size())
				linesToDraw = 0;
		}
		
		private void drawLines(Graphics g)
		{
			for(int i = 0; i < linesToDraw; i++)
			{
				Line currentLine = lines.get(i);
				g.drawLine(currentLine.getX1(), currentLine.getY1(), currentLine.getX2(), currentLine.getY2());
			}
		}

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			drawLines(g);
		}
	}
	
	class Line
	{
		private int x1;
		private int y1;
		private int x2;
		private int y2;
		
		public Line(int x1, int y1, int x2, int y2)
		{
			setX1(x1);
			setY1(y1);
			setX2(x2);
			setY2(y2);
		}

		public int getX1() {
			return x1;
		}

		public void setX1(int x1) {
			this.x1 = x1;
		}

		public int getY1() {
			return y1;
		}

		public void setY1(int y1) {
			this.y1 = y1;
		}

		public int getX2() {
			return x2;
		}

		public void setX2(int x2) {
			this.x2 = x2;
		}

		public int getY2() {
			return y2;
		}

		public void setY2(int y2) {
			this.y2 = y2;
		}
	}
}

War jetzt nicht so schwer oder? :) Mehr Eigeninitiative!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
E Mysql Update wenn es nicht existiert insert Java Basics - Anfänger-Themen 14
G Konstruktor und update Java Basics - Anfänger-Themen 4
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
S Lost-Update Semaphore Java Basics - Anfänger-Themen 6
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
J fehler nach windows update Java Basics - Anfänger-Themen 44
Y Observer update Java Basics - Anfänger-Themen 3
G Threads Konstantes Update Java Basics - Anfänger-Themen 1
X Eventservice Probleme nach Update Java Basics - Anfänger-Themen 0
B VAriables update in for-Schelifen Java Basics - Anfänger-Themen 3
L Jar aus Jar Starten lassen (Update Tool) Java Basics - Anfänger-Themen 6
P Update System Java Basics - Anfänger-Themen 16
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
K Threads jProgressBar update Java Basics - Anfänger-Themen 14
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
A JDK installieren Java update - neu installieren? Java Basics - Anfänger-Themen 7
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
E Programm - Update via Internet? Java Basics - Anfänger-Themen 5
B JDK installieren Java SE Development Kit 6 Update 25 Java Basics - Anfänger-Themen 5
M Update-Ticker... String in Textdatei schreiben und auslesen Java Basics - Anfänger-Themen 5
S MVC Prinzip - update() ? Java Basics - Anfänger-Themen 2
B Problem mit prepareStatement UPDATE Java Basics - Anfänger-Themen 2
M Serializable - Bei Update ältere Daten importieren Java Basics - Anfänger-Themen 14
C JAVA - Einstieg mit Eclipse - Update Sites und Ähnliches Java Basics - Anfänger-Themen 6
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
L Java Persistence API - Update Befehl? Java Basics - Anfänger-Themen 5
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
A update/draw schleife Java Basics - Anfänger-Themen 5
S update wird nicht aufgerufen Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
A label update Java Basics - Anfänger-Themen 10
Y JDK 6 Update 5 with Java EE? Java Basics - Anfänger-Themen 2
M Java SQL-Update Java Basics - Anfänger-Themen 6
S Ein Update System programmieren Java Basics - Anfänger-Themen 27
P Zeichenprogramm-->update() aushebeln Java Basics - Anfänger-Themen 11
S SQL UPDATE in Java "wie schreiben"? Java Basics - Anfänger-Themen 6
E Update JList Java Basics - Anfänger-Themen 13
J Problem bei Update auf Datenbank Java Basics - Anfänger-Themen 2
K Observer Observable update() . Java Basics - Anfänger-Themen 13
R JRE 1.5.0 Update 7 Install erkennt nicht Firefox/Netscape Java Basics - Anfänger-Themen 3
M [SOLVED]update() bei MVC Java Basics - Anfänger-Themen 4
M Datenbankabfrage mit UPDATE Java Basics - Anfänger-Themen 4
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
N Array aus JCheckBox? 1000 if's UPDATE: Spaltennamen auslesen Java Basics - Anfänger-Themen 12
G Update auf Datenbankspalte vom Typ Timestamp mit aktu. Datum Java Basics - Anfänger-Themen 3
G Observable/Observer update wird nicht ausgeführt Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben