Zum Inhalt springen

blueJ

Mitglieder
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

  1. Hi! Mit den Shapes war ein super Tip. Hab es jetzt geschafft, dass die Linien und Strings nicht verschwinden. Speicher alles in ArrayListen. public void drawStrecke(int grad, int strecke, String movement) { Point nPoint = new Point(); if (movement.equals("Links")) { oGrad = oGrad + grad; //g2.fillOval(oPoint.x-5, oPoint.y-5, 10, 10); shapes.add(new Ellipse2D.Double(oPoint.x-5, oPoint.y-5, 10, 10)); //g2.drawString(grad+"°", oPoint.x-25, oPoint.y+15); nxtString.add(new NxtString(grad, oPoint.x-25, oPoint.y+15)); } if (movement.equals("Rechts")) { oGrad = oGrad - grad; //g2.fillOval(oPoint.x-5, oPoint.y-5, 10, 10); shapes.add(new Ellipse2D.Double(oPoint.x-5, oPoint.y-5, 10, 10)); //g2.drawString(grad+"°", oPoint.x+5, oPoint.y+15); nxtString.add(new NxtString(grad, oPoint.x+5, oPoint.y+15)); } if (movement.equals("Gerade")) { nPoint.x = new Double(oPoint.x+(Math.sin(Math.toRadians(oGrad))*strecke)).intValue(); nPoint.y = new Double(oPoint.y+(Math.cos(Math.toRadians(oGrad))*strecke)).intValue(); shapes.add(new Line2D.Double(oPoint.x,oPoint.y,nPoint.x,nPoint.y)); oPoint = nPoint; } repaint(); } Thema kann also geschlossen werden. Und danke nochmal. MFG blueJ
  2. Hi bigredeyes! Vielen Dank für deine Hilfe. Werde mir das mit den Shapes nachher mal angucken und mich dann noch mal melden, wenn es geklappt hat. MFG blueJ
  3. Hallo zusammen! Dies ist meine erster Beitrag in diesem Forum. Daher erst mal "Hallo" an alle. So nun zu meinem Problem: Ich habe eine Klasse geschrieben, die ich von JPanel ableite. In dieser Klasse überschreibe ich die Methode paintComponent(Graphics g);. Wenn ich etwas in der Methode zeichne wird auch alles angezeigt. Ich habe einen Button mit dem ich einige Linien in das JPanel zeichne, dass klappt auch alles soweit. Wenn ich aber z.B. das Fenster meiner Applikation minimiere und wieder aufrufe sind die Striche, die ich zur Laufzeit gezeichnet habe, wieder weg. Ich habe herausgefunden, dass bei jedem Neuaufruf des Fensters wieder die paintComponent-Methode aufgerufen wird, womit meine gezeichneten Striche natürlich wieder überzeichnet werden. Meine Frage: Gibt es eine Möglichkeit, meine gezeichneten Linien auszulesen und wieder zu zeichnen, wenn das Fenster neu aufgerufen wird. Habe es schon mit g2 = (Graphics2D)getGraphics(); probiert. Es wird mir jedoch nur ein leeres Panel gezeichnet. Mein paint-Methode: public void paintComponent (Graphics g) { Dimension dim = getSize(); if(!start) { oPoint.x = dim.width/2; oPoint.y = dim.height - 30; } super.paintComponent(g); g2 = (Graphics2D) g; g2.setPaint(Color.white); g2.fill3DRect(10, 10, dim.width - 20, dim.height - 20, true); g2.setColor(Color.black); g2.setStroke(new BasicStroke(6.0F)); Line2D.Double linie1 = new Line2D.Double(oPoint.x-50, oPoint.y-20, oPoint.x+50, oPoint.y-20); Line2D.Double linie2 = new Line2D.Double(oPoint.x-50, oPoint.y-20, oPoint.x-50, oPoint.y+10); Line2D.Double linie3 = new Line2D.Double(oPoint.x+50, oPoint.y-20, oPoint.x+50, oPoint.y+10); g2.draw(linie1); g2.draw(linie2); g2.draw(linie3); g2.setColor(Color.green); g2.setStroke(new BasicStroke(3.0F)); Ellipse2D.Double there = new Ellipse2D.Double(oPoint.x-10, oPoint.y-10, 20, 20); g2.fill(there); start = true; } Meine Methode zum zeichnen einer Strecke: public void drawStrecke(int grad, int strecke, String movement) { g2 = (Graphics2D)this.getGraphics(); Point nPoint = new Point(); g2.setColor(Color.red); if (movement.equals("Links") ) { oGrad = oGrad + grad; } if (movement.equals("Rechts")) { oGrad = oGrad - grad; } if (movement.equals("Links")) { g2.fillOval(oPoint.x-5, oPoint.y-5, 10, 10); g2.drawString(grad+"°", oPoint.x-25, oPoint.y+15); } if (movement.equals("Rechts")) { g2.fillOval(oPoint.x-5, oPoint.y-5, 10, 10); g2.drawString(grad+"°", oPoint.x+5, oPoint.y+15); } if (movement.equals("Gerade")) { nPoint.x = new Double(oPoint.x+(Math.sin(Math.toRadians(oGrad))*strecke)).intValue(); nPoint.y = new Double(oPoint.y+(Math.cos(Math.toRadians(oGrad))*strecke)).intValue(); g2.setStroke(new BasicStroke(3.0F)); g2.draw(new Line2D.Double(oPoint.x,oPoint.y,nPoint.x,nPoint.y)); oPoint = nPoint; } g2 = (Graphics2D)this.getGraphics(); //System.out.println(oGrad); //System.out.println(oPoint); //System.out.println(nPoint); } Vielen Dank im voraus. MFG blueJ

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...