2016-09-29 2 views
0

Ich bin neu in Java und versuche herauszufinden, wie ich sicherstellen kann, dass mein Bild nach der Größenänderung des Fensters auf dem Bildschirm bleibt. Ich habe versucht, vor dem Posten nach der Antwort zu suchen, aber ich finde nicht, wonach ich suche.Wie wird das Bild nach der Größenänderung beibehalten?

Was ist der beste Weg dies zu tun und wie sollte ich es tun? Hier

ist, was ich die „wichtigen“ Code halten:

public void mouseDragged(MouseEvent DrawingEvent) { 
    Graphics g = getGraphics(); 
    g.drawLine(DrawPoint.x, DrawPoint.y, DrawingEvent.getX(), DrawingEvent.getY()); 
    DrawPoint = new Point(DrawingEvent.getX(), DrawingEvent.getY()); 
} 

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
} 
} 

Antwort

2

Um das Bild zu erhalten bleiben:

  • Sie kein Grafikobjekt erhalten verwenden, indem getGraphics() auf einem Swing-Komponente aufrufen . Diese Objekte sind kurzlebig und können zum Verschwinden von Bildern oder NullPointerExceptions führen.
  • Zeichnen Sie stattdessen mit dem von der JVM angegebenen Graphics-Objekt in die paintComponent-Methode Ihres JPanels, genau wie es die Swing drawing tutorials Ihnen sagt.
  • Sie können auf BufferedImage zeichnen und dieses Bild dann in der paintComponent-Methode Ihres JPanels anzeigen - wahrscheinlich der einfachste Weg, um das zu erreichen, was Sie erreichen möchten.
  • Oder Sie können eine ArrayList von nicht-grafischen Objekten wie Points oder Line2D erstellen und dann anhand dieser Objektgruppen festlegen, wie in der paintComponent-Methode des JPanels gezeichnet wird.

For example

+0

* "Sie befinden sich auf einem BufferedImage ziehen kann, und dann das Bild angezeigt werden .." * in einem 'JLabel' - rufen Sie einfach' jLabel.repaint() ', wenn das Bild aktualisiert wird. Ich bevorzuge diesen Ansatz, wenn es keinen (weiteren) guten Grund für eine individuelle Bemalung gibt. Zum einen vermeidet es die möglichen Fallstricke eines falschen Überschreibens der Malmethode. –

Verwandte Themen