Zeichnen auf zwei Labels. Geht nit

Status
Nicht offen für weitere Antworten.

andy_y

Mitglied
Hi. Ich hab ein Applet mit 2 Labels. Beide werden jeweils durch ne eigene Klasse, die von Label abgeleitet ist, repräsentiert und besitzen jedes eine Methode, in der ich Rechtecke usw. zeichne.

Die Instanzen der beiden Klassen sind L1 und L2. L1 hat ne Hintergrundfarbe, L2 ist durchsichtig.

In der Klasse, die von Applet abgeleitet ist, habe ich einen MouseListener implementiert. Zum zeichnen eines Rechtecks (für den Anfang reicht das) brauche ich in den beiden Label-Klassen das Graphic-Objekt des jeweiligen Labels, sowie die Koordinaten des Punktes, an dem ich die Maustaste drücke und die des Punktes, an dem ich sie loslasse.

In mouseReleased(MouseEvent MEvt) rufe ich dann die Methode 'Zeichnen', in z.B.: der Klasse von Label1, auf und übergebe die 5 Argumente.

Das funktioniert auch alles ganz gut sowiet und ich bekomme auch keine Fehlermeldung, weder beim compilieren, noch beim ausführen des Applets.

Das Problem ist: es wird nicht gezeichnet.

Hier ist mal der ungefähre Code:

Code:
public class Hauptklasse extends Applet implements MouseListener {

 public int X1, Y1, X2, Y2;
 public Graphic graphicL1, graphicL2;

 public void init() {
  //Komponenten setzen usw.
  KlasseL1 L1 = new KlasseL1();
  KlasseL2 L2 = new KlasseL2();
 }

 public void mousePressed(MouseEvent MEvt) {
  X1 = MEvt.getX();
  Y1 = MEvt.getY();
  graphicL1 = L1.getGraphics();
  graphicL2 = L2.getGraphics();
 }

 public void mouseReleased(MouseEvent MEvt) {
  X2 = MEvt.getX();
  Y2 = MEvt.getY();
  L1.Zeichnen(graphicL1, X1, Y1, X2, Y2);
 }
}

class KlasseL1 {
 
 public void Zeichnen(Graphic graphic, int X1, int Y1, int X2, int Y2) {
  graphic.drawRect(X1,Y1,X2-X1,Y2-Y1);
 }
}

class KlasseL2 {
 
 public void Zeichnen(Graphic graphic, int X1, int Y1, int X2, int Y2) {
  graphic.drawRect(X1,Y1,X2-X1,Y2-Y1);
 }
}

Ich glaub so ungefähr war der Code. Ich komm jetzt bloss nich an den richtigen Code ran, weil ich nich zu Hause bin.
Hoffe mir kann jemand helfen bei dem gewurschel.
 
B

Beni

Gast
Das "Graphics"-Objekt kann man nicht speichern, es "zerfällt" nach einer gewissen Zeit.
- Zeichne auf ein BufferedImage, und dieses Image dann auf das Label (besser Panel).
- Oder: speichere deine Rechtecke in einer Liste, und zeichne sie alle aufeinmal.

In jedem Fall musst du "paintComponent" überschreiben, und das Graphics verwenden, das du da bekommst (und repaint() aufrufen, wenn was neues gezeichnet werden soll).
 

andy_y

Mitglied
Aber wenn ich doch bei jedem Mausklick
Code:
graphicL1 = L1.getGraphic();
aufrufe, dann hab ich doch bei jedem Zeichnen ein neues Graphics-Objekt.
 
S

SlaterB

Gast
L1 ist doch deine eigene Klasse?
da fragt man sich wo L1 das Graphic-Objekt herbekommt, wenn es nicht dort irgendwo gespeichert ist,

das Problem verschiebt sich also nur,
 

andy_y

Mitglied
Hm, jetzt bin ich doch leicht durcheinander.
Label ist doch von Component abgeleitet. Und Component besitzt die Methode getGraphics().
Also bekomme ich doch den Grafikkontext wenn ich schreibe L1.getGraphics().
Und mit dem zeichne ich.
Oder hab ich jetzt nen Denkfehler ???:L
 

André Uhres

Top Contributor
Du musst paintComponent überschreiben weil diese Methode
jedesmal vom System aufgerufen wird wenn ein repaint
erforderlich wird, z.B. wenn dein Frame von einer anderen
Anwendung verdeckt wird und dann wieder aufgedeckt wird.
 
S

SlaterB

Gast
L1 ist also eine Klasse die von Label abgeleittet ist,
gut zu wissen, dass ist ja aus deinem Code nicht ersichtlich,

nun ist zwar die Operation getGraphics() verständlich aber es gilt trotzdem:
diese Operation hat (soweit ich das verstehe) nix mit dem Zeichnen zu tun, höchstens intern,

die Darstellung von Komponenten kann man ändern indem man ihre paint()/ paintComponent()-Operationen überschreibt,
um das Zeichnen auszulösen ruft man repaint() auf,
mehr gibts da gar nicht zu wissen, steht sicherlich auch in einem beliebigen Java-Buch deiner Wahl in dieser Form

dein Code müsste grob also eher wie folgt aufgebaut sein:
Code:
public class Hauptklasse extends Applet implements MouseListener {

public int X1, Y1, X2, Y2;
public Graphic graphicL1, graphicL2;

public void init() {
  //Komponenten setzen usw.
  KlasseL1 L1 = new KlasseL1();
  KlasseL2 L2 = new KlasseL2();
}

public void mousePressed(MouseEvent MEvt) {
  X1 = MEvt.getX();
  Y1 = MEvt.getY();
}

public void mouseReleased(MouseEvent MEvt) {
  X2 = MEvt.getX();
  Y2 = MEvt.getY();
  L1.setData(x1,y1,x2,y2)
  L1.repaint();
}
}

class KlasseL1 {

public int X1, Y1, X2, Y2;

public void setData(int newX1, ...) {
   this.x1 = newX1;
   ...
}

public void paint(Graphic graphic) {
  graphic.drawRect(X1,Y1,X2-X1,Y2-Y1);
}

}

}

erscheint vielleicht umständlich im Moment,
mit mehr Beispielen/ Übung wirds irgendwann klarer
 

Leroy42

Top Contributor
SlaterB hat gesagt.:
L1 ist doch deine eigene Klasse?
SlaterB hat gesagt.:
L1 ist also eine Klasse die von Label abgeleittet ist,
gut zu wissen, dass ist ja aus deinem Code nicht ersichtlich?

Hihi, solche Verwirrung kann entstehen wenn sich einer nicht an die Konventionen
hält. :cool:

Code:
KlasseL1 L1 = new KlasseL1();

L1 sind im Originalcode keine Klassen sondern Variablen die andy_y nur nicht
klein geschrieben hat.

Außerdem sehe ich gerade, daß sie keine Instanzvariablen sind, sondern nur
lokal in der init()-Methode erzeugt und gleich wieder verworfen werden.

Außerdem werden die Klassen KlasseL1 und KlasseL2 gar nicht von Label
abgeleitet. Ich schätze andy_y sollte sich erstmal mithilfe eines Tutorials
etwas intensiver in AWT-Programmierung einarbeiten :###
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
M Swing Warum öffnen sich beim Zeichnen mit Swing plötzlich zwei Fenster? AWT, Swing, JavaFX & SWT 5
L Zeichnen in zwei Fenstern AWT, Swing, JavaFX & SWT 8
Y xormode bzw bild in zwei ebenen zeichnen AWT, Swing, JavaFX & SWT 4
W Instanz eines Steuerelementes an zwei Stellen zeichnen AWT, Swing, JavaFX & SWT 3
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
G Dreieck aus Pixeln zeichnen AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
Z Swing Graph zeichnen lassen AWT, Swing, JavaFX & SWT 16
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
L Swing zeichnen AWT, Swing, JavaFX & SWT 14
S GUI Kreuz zeichnen und Position ausgeben AWT, Swing, JavaFX & SWT 3
S GUI Kreis zeichnen AWT, Swing, JavaFX & SWT 13
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
L Swing Ein Rechteck in ein Grid Zeichnen AWT, Swing, JavaFX & SWT 5
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
E Transparent zeichnen AWT, Swing, JavaFX & SWT 2
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
T Tic Tac Toe - GUI Linien zeichnen AWT, Swing, JavaFX & SWT 14
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
Soloeco Graph zeichnen AWT, Swing, JavaFX & SWT 1
G Zeichnen Programm AWT, Swing, JavaFX & SWT 1
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
A Swing JRadioButton zeichnen nicht AWT, Swing, JavaFX & SWT 4
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
S Parallele Linien zeichnen AWT, Swing, JavaFX & SWT 5
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
L JavaFX JavafX Timelime zeichnen und schön stylen? AWT, Swing, JavaFX & SWT 2
I JFrame neu zeichnen, nicht überzeichnen! AWT, Swing, JavaFX & SWT 2
I Spielsteine zeichnen und entfernen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
H Swing BufferedImage zeichnen AWT, Swing, JavaFX & SWT 1
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
S 2D-Grafik MouseDragged Linien zeichnen AWT, Swing, JavaFX & SWT 4
M Zeichnen ohne vorherige Linien zu löschen AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
T Swing / Kreis zeichnen AWT, Swing, JavaFX & SWT 2
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
I Pfeil zeichnen am Ende einer Linie AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
F Zeichnen des Button AWT, Swing, JavaFX & SWT 4
B Zeichnen mit paintComponent? Oder anders? AWT, Swing, JavaFX & SWT 15
C Swing Aus verschiedenen Klassen zeichnen. AWT, Swing, JavaFX & SWT 2
C Swing BufferedImage zeichnen und JLabels setzen. AWT, Swing, JavaFX & SWT 17
M Kein Zeichnen der Figuren auf JPanel AWT, Swing, JavaFX & SWT 4
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
P SWT Nebula Gallery - Bildbereiche zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Zeichnen einer sich bewegenden Box mit BufferStrategy zieht Spur AWT, Swing, JavaFX & SWT 2
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
Helgon Swing Mit Swing zeichnen / NetBeans GUI AWT, Swing, JavaFX & SWT 11
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
J JApplet und Zeichnen AWT, Swing, JavaFX & SWT 8
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
4 Swing Graphen selber zeichnen AWT, Swing, JavaFX & SWT 2
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
T Zeichnen von getSubimage funktioniert nicht AWT, Swing, JavaFX & SWT 7
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
N JPanel neu zeichnen AWT, Swing, JavaFX & SWT 10
D Zeichnen eines Barplots AWT, Swing, JavaFX & SWT 2
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
M Suche Javabibliothek zum Zeichnen mathematischer Funktionen AWT, Swing, JavaFX & SWT 11
P ScrollPane nach zeichnen dynamisch resize AWT, Swing, JavaFX & SWT 7
M Swing In GUI-Builder-JFrame mit Menü Schreiben und Zeichnen AWT, Swing, JavaFX & SWT 4
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
S Swing Bild auf jPanel nach Änderung von JComboBox zeichnen AWT, Swing, JavaFX & SWT 4
C Funktionen zeichnen AWT, Swing, JavaFX & SWT 16
P JPanel neu zeichnen AWT, Swing, JavaFX & SWT 10
M Auf einem Hintergrundbild zeichnen AWT, Swing, JavaFX & SWT 2
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
T Oval auf ein JPanel zeichnen AWT, Swing, JavaFX & SWT 3
S Font laden, Wort zeichnen und animieren..? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben