ERLEDIGT
JA
JA
ANTWORTEN
15
15
ZUGRIFFE
395
395
EMPFEHLEN
-
10.08.11 15:37 #1
- Registriert seit
- Aug 2011
- Beiträge
- 62
Hallo liebe Java Experten,
ich bin neu hier. beschäftige mich den 3 tag mit java und benötige einen Denkanstoß.
Ich habe ein 2- dimensionalles Array [30][4]. Aus diesem Array möchte ich nun 30 Rechtecke mit den 4 positionswerten zeichnen.
Habe mich schon ziemlich durchgegoogelt, finde aber nichts passendes.
Danke für eure Hilfe im Voraus.
-
10.08.11 15:43 #2
Hi und herzlich Willkommen erstmal,
also wenn du die Rechtecke zeichnen willst, empfehle ich dir die Klasse Rectangle mal anzusehen.
Viele Grüße
Sporticus
-
10.08.11 15:55 #3
- Registriert seit
- Aug 2011
- Beiträge
- 62
erstmals danke für die rasche antwort.
falls ich das richtig verstanden habe, transfomiere ich mein Positionsarray in ein RectangleArray!?
nun muss ich nur noch das RectangleArray ausgeben!
BeispielCode wäre aüßerst hilfreich! Danke
-
10.08.11 16:05 #4
Ich hoffe das entspricht überhaupt dem, was du machen willst. So habe ich es zumindest verstanden.

Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
import java.awt.Graphics; import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; public class RectanglePainter { private final List<Rectangle> rectangles; /** * @param rectArray */ public RectanglePainter(int[][] rectArray) { this.rectangles = new ArrayList<Rectangle>(); for(int i = 0; i < rectArray.length; i++) { int x = rectArray[i][0]; // X-Position int y = rectArray[i][1]; // Y-Position int width = rectArray[i][2]; // Width int height = rectArray[i][3]; // Height rectangles.add(new Rectangle(x, y, width, height)); } } /** * @param g */ public void paint(Graphics g) { for(int i = 0; i < rectangles.size(); i++) { Rectangle r = rectangles.get(i); g.drawRect(r.x, r.y, r.width, r.height); } } }
Geändert von Fabio Hellmann (10.08.11 um 17:09 Uhr)
-
10.08.11 16:38 #5
- Registriert seit
- Aug 2011
- Beiträge
- 62
ja das kommt ziemlich auf meine frage hin, allerdings bin ich zu dumm um dieses Snippet richtig einzusetzten.
ich erklärs mal ausführlicher:
ich versuche eine kleine Java Applikation zu schreiben mit der ich eine Bahn generieren kann. Ich habe ein Button- Menü mit der ich Bahnstücke hinzufügen kann und die Länge bzw. Krümmung eingeben kann. Diese Bahnstücke werden in einem Array abgespeichert. sections[][].
Nun möchte ich die Bahn grafisch ausgeben, mit den Werten welche im section[][] Array stehen. Diese Grafik soll nach Buttondruck aktualisiert werden, befindet sich in einem JPanel.
Wie rufe ich das Programm nun auf?
Sorry für diese dummen Fragen
danke
-
10.08.11 16:45 #6
Es gibt keine dummen Fragen, nur dumme Antworten.

Ich glaube am einfachsten wäre es, wenn du mal deinen bisherigen Code postest, damit ich einen besseren Überblick bekomme.
-
10.08.11 16:52 #7
- Registriert seit
- Aug 2011
- Beiträge
- 62
Code des Zeichenprogramms
package test5;
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JComponent {
private static final long serialVersionUID = 1L;
public Integer[][] sectionsToDraw = new Integer[30][12];
public void paintComponent(Graphics g) {
super.paintComponent(g);
sectionsToDraw[0][0]= 40;
g.setColor(new Color(100,100,155));
g.fillRect(20,20,sectionsToDraw[0][0],20);
}
}
Aufruf
....
MyPanel drawPanel= new MyPanel();
....
if(obj == jBShow)
{
drawPanel.setPreferredSize(new Dimension(330,290));
jPImage.add(drawPanel);
jPImage.validate();
}
..l.
-
10.08.11 16:58 #8
Verwende bitte das nächste mal die Code-Tags.
Also ich würde den RectanglePainter bei deiner Klasse MyPanel einfügen.
Zum Beispiel so:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; import javax.swing.JComponent; public class RectanglePainter { private List<Rectangle> rectangles; /** * @param rectArray */ public void update(int[][] rectArray) { this.rectangles = new ArrayList<Rectangle>(); for(int i = 0; i < rectArray.length; i++) { int x = rectArray[i][0]; // X-Position int y = rectArray[i][1]; // Y-Position int width = rectArray[i][2]; // Width int height = rectArray[i][3]; // Height rectangles.add(new Rectangle(x, y, width, height)); } } /** * @param g */ public void paint(Graphics g) { for(int i = 0; i < rectangles.size(); i++) { Rectangle r = rectangles.get(i); g.drawRect(r.x, r.y, r.width, r.height); } } } class MyPanel extends JComponent { private static final long serialVersionUID = 1L; private final RectanglePainter rectPainter = new RectanglePainter(); public void setRectangleArray(int[][] rectArray) { rectPainter.update(rectArray); } public void paintComponent(Graphics g) { super.paintComponent(g); rectPainter.paint(g); } } Aufruf .... MyPanel drawPanel= new MyPanel(); .... if(obj == jBShow) { drawPanel.setPreferredSize(new Dimension(330,290)); jPImage.add(drawPanel); jPImage.validate(); } }
Geändert von Fabio Hellmann (10.08.11 um 17:09 Uhr)
-
10.08.11 17:05 #9
- Registriert seit
- Jun 2009
- Beiträge
- 870
noch besser wären die Java-Tags mit automatischem Syntaxhighlighting, siehe meine Signatur.
Andere Frage: wozu brauchst du überhaupt ein 2dimensionales Array? Ist das eine Vorgabe? Viel sinnvoller wäre es, von Anfang an mit Rectangles zu arbeiten.Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
10.08.11 17:22 #10
- Registriert seit
- Aug 2011
- Beiträge
- 62
Es ist nötig Arrays zu verwenden, da diese "sections" auch noch andere Parameter beinhalten.
Schön langsam bin ich am verzweifelen, da das speichern, öffen alles funktioniert nur das verdammte zeichnen nicht. ich will doch nur ein Array als rechtecke ausgeben!
-
10.08.11 18:09 #11
- Registriert seit
- Aug 2011
- Beiträge
- 62
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
package test5; import java.awt.*; import javax.swing.*; public class MyPanel extends JComponent { private static final long serialVersionUID = 1L; public Integer[][] sectionsToDraw = new Integer[30][12]; Rectangle[] rect = new Rectangle[20]; public void paintComponent(Graphics g) { super.paintComponent(g); rect[0].x = 10; rect[0].y = 10; rect[0].width = 60; rect[0].height = 20; g.setColor(Color.black); g.drawRect(rect[0].x, rect[0].y, rect[0].width, rect[0].height); } }
Habe es jetzt auf eine andere Weise probiert, funktioniert dennoch nicht.
Warum bekomme ich hier eine NullPointException?
danke
-
10.08.11 20:27 #12
- Registriert seit
- Jun 2009
- Beiträge
- 870
weil dein Rectangle[] ausschließlich mit NULL-Objekten gefüllt ist. Du musst es noch füllen.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
11.08.11 08:00 #13
- Registriert seit
- Aug 2011
- Beiträge
- 62
hä? ich füll doch das Array mit
Code java:1 2 3 4
rect[0].x = 10; rect[0].y = 10; rect[0].width = 60; rect[0].height = 20;
check ich nicht!
-
11.08.11 09:24 #14
Nein, damit versuchst du auf das Rectangle mit dem Index 0 aus dem Rectangle-Array zuzugreifen.
Wenn du ein Rectangle setzen willst, dann musst du das so machen:
-
12.08.11 11:04 #15
- Registriert seit
- Aug 2011
- Beiträge
- 62
okay danke für eure schnelle hilfe. klappt nun wunderbar mit fabios vorschläge.
Danke
Ähnliche Themen
-
PHP Array mittels JQuery ausgeben
Von Purdey im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 23.04.11, 20:04 -
Jtable Integer Array Wert ausgeben mittels Button
Von PGNN im Forum JavaAntworten: 0Letzter Beitrag: 22.12.08, 01:01 -
mehrere indizierte Array zu einem Array fügen
Von Maniac im Forum PHPAntworten: 10Letzter Beitrag: 17.12.08, 13:53 -
Mehrere Dateien mittels array und unlink löschen
Von qsrs im Forum PHPAntworten: 19Letzter Beitrag: 14.04.05, 12:26 -
Mehrere Abfragen zu einem Array?
Von dennis2412 im Forum PHPAntworten: 8Letzter Beitrag: 22.11.03, 09:31





Zitieren
Login





