Rechteck per Mouse aufziehen

Status
Nicht offen für weitere Antworten.
S

Sanne

Gast
Hallo,
ich weiß, dass erfahrende Programmierer mich wegen meines Quelltextes erschießen werden, aber manches davon war auch Vorgabe eines C++ Menschens. Also geht bitte nicht ganz so hart mit mir um. ;-)

So und nun zu meinem Problem. Ich möchte auf einer Grafikausgabefläche ein neues Rechteck aufziehen können, dass dann auch angezeigt wird. Leider tut sich gar nichts, weder kommt eine Fehlermeldung noch wird etwas gezeichnet.

Den Quellcode findet ihr unter http://pastebin.com/516622
Falls die Oberklasse Drawing von Interesse ist http://pastebin.com/516624
Und Figure http://pastebin.com/516625

Ich hoffe es kann mir jemand helfen.

Liebe Grüße Sanne
 
B

Beni

Gast
Ok, ich verkneife mir jeden Kommentar zum Code... :wink:

Doch, etwas muss ich sagen: keine statischen Variablen verwenden! Den MouseListener nicht in der main hinzufügen, sondern im Konstruktor des TDrawing (das ist die logische Kapselung: der Listener gehört zum TDrawing, und steht nicht einfach so alleine in der Gegend rum).

Figur erbt von JPanel? Ich halte das für fragwürdig, sie wird ja nie als Panel verwendet...

Zum Fehler, es sind gleich mehrere :bae:
1. Ein Graphics kann man nicht speichern! Jedesmal wenn gezeichnet wird, bekommt man von der VM ein neues Graphics-Objekt, das alte verlierte jeden Einfluss. Die Variable "g" kannst du einfach mal löschen :wink:
Stattdessen speicherst du am besten ob, und wo die Maus gedrückt ist. In der paint-Methode kannst du dann die Figur zeichnen (ein Update kannst du mit "repaint" erzwingen).
2. mouseClicked wird nur aufgerufen, wenn die Maus nicht bewegt wurde. Ich denke, du solltest mouseReleased nehmen.
3. mouseDragged ist Teil des Interfaces "MouseMotionListener", du fügst den Listener jedoch als "MouseListener" hinzu. Du musst den Listener sowohl "addMouseListener" übergeben (für das Drücken und Loslassen der Tasten), sowie der "addMouseMotionListener" (für das Herumfahren).
 
S

Sanne

Gast
Hi,
danke erst einmal, ein bißchen was kann ich damit schon anfangen. Als erstes stolpere ich allerdings darüber, dass ich doch keinen MouseListener in den Konstruktor schreiben kann, wenn der sich doch auf eine Instanz dieses Konstruktors bezieht. (TDraw wird ja erst noch erzeugt, genauso wie die Labels).

Wahrscheinlich liegt es aber wieder daran, dass ich keine Ahnung von Java habe.

Greetz Sanne
 
B

Beni

Gast
Wenn der Konstruktor aufgerufen wird, existiert das Objekt bereits. Es geht nur noch darum, die Variablen richtig zu initialisieren.

Das kann so aussehen:
Code:
public cass TDrawing extends Drawing{
  public TDrawing(){
    MouseAdapter mouse = new MouseAdapter(){
       .... // mousePressed etc
    };

    addMouseListener( mouse ); // bezieht sich auf "this" (Dieses Objekt)
    addMouseMotionListener( mouse );
  }
}
 
S

Sanne

Gast
Das hab ich auch gerade verstanden. Nur bleibt das Problem, dass ich in den Listener die Labels verändere, die ich erst in der main anlege.
 
B

Beni

Gast
Ok, wenn man das jetzt auch noch kapseln wollte, müsste man noch mehr Klassen machen... (bzw. all die Labels ebenfalls in Variablen speichern), ich glaube der Aufwand das umzuschreiben lohnt sich doch nicht :-/

Behalts einfach im Hinterkopf für das nächste Programm :wink:
 
S

Sanne

Gast
Hab es mal etwas umgeschrieben und versucht übersichtlicher zu gestalten. http://pastebin.com/517240

Naja, funktionieren tut es natürlich nicht. Man abgesehen davon, dass mir Eclipse immernoch nen Fenster rausschmeißt dessen BG blau ist, obwohl ich nicht wüßte, dass irgendwo so geschrieben zu haben.

*geht weiter auf Fehlersuche*

Greetz Sanne
 
S

Sanne

Gast
Bin doch gar net so blond, wie ich aussehe. Weiß auch nicht warum Eclipse immer ne alte Version der Klasse gezeigt hat. Jedenfalls funktioniert es jetz!

Vielen lieben Dank!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Rechteck via Mouse bewegen AWT, Swing, JavaFX & SWT 2
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
B AWT Rechteck abnehmen lassen AWT, Swing, JavaFX & SWT 9
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
E Button verschwindet nachdem ein Rechteck gezeichnet wurde AWT, Swing, JavaFX & SWT 5
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
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
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
F 2D-Grafik Gestricheltes Rechteck AWT, Swing, JavaFX & SWT 1
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
S Warum wird dieses Rechteck nicht korrekt gemalt? AWT, Swing, JavaFX & SWT 7
S "Quadrat oder Rechteck" - Check AWT, Swing, JavaFX & SWT 3
C Rechteck drehen AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Rechteck befindet sich unter dem Rahmen des JFrame. AWT, Swing, JavaFX & SWT 1
M JavaFX Rechteck mit MausListener AWT, Swing, JavaFX & SWT 3
B Rechteck Mit Hilfe Von Timeline, KeyFrames animieren AWT, Swing, JavaFX & SWT 3
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
J SWT Rechteck Füllfarbe wird bei Action falsch gefüll AWT, Swing, JavaFX & SWT 2
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
C Auto fahren - Rechteck JFrame AWT, Swing, JavaFX & SWT 6
E Swing Rechteck und Kreise verschieben AWT, Swing, JavaFX & SWT 3
G Swing Rechteck uebermalen AWT, Swing, JavaFX & SWT 10
M Rechteck "umdrehen"/über die Kante drehen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Rechteck mit dickerem Rand zeichnen AWT, Swing, JavaFX & SWT 8
H Rechteck grafisch ausgeben (2D) AWT, Swing, JavaFX & SWT 3
G Rechteck mit Farbverlauf AWT, Swing, JavaFX & SWT 5
E Rechteck in JPanel Zeichnen AWT, Swing, JavaFX & SWT 6
G Rechteck zeichnen + "special features" :-) AWT, Swing, JavaFX & SWT 16
A Java Button mal nicht nur als rechteck AWT, Swing, JavaFX & SWT 16
B awt rechteck zeichnen AWT, Swing, JavaFX & SWT 3
R Rechteck drehen! AWT, Swing, JavaFX & SWT 4
K Problem mit JLabel, Rechteck, repaint() ;) AWT, Swing, JavaFX & SWT 2
J Auf Button - Druck soll Rechteck Farbe verändern AWT, Swing, JavaFX & SWT 8
M Rechteck zeichnen AWT, Swing, JavaFX & SWT 4
TheJavaKid Kreis, Rechteck, Linie. verschieben AWT, Swing, JavaFX & SWT 5
A Dreidimensionales Rechteck AWT, Swing, JavaFX & SWT 3
C Schräges Rechteck in Swing? AWT, Swing, JavaFX & SWT 7
G Rechteck normalisieren AWT, Swing, JavaFX & SWT 2
P Rechteck "verkehrt" herum zeichnen AWT, Swing, JavaFX & SWT 2
G mouse events AWT, Swing, JavaFX & SWT 6
N Mouse methods AWT, Swing, JavaFX & SWT 10
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
M Java FX Mouse over AWT, Swing, JavaFX & SWT 4
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
B GUI mit Mouse Touch AWT, Swing, JavaFX & SWT 27
S Mouse Events in einer sortierten JTable unterscheiden AWT, Swing, JavaFX & SWT 18
A Mouse event und exit on close AWT, Swing, JavaFX & SWT 11
H Java Robot mouse funktioniert nur auf Notebook nicht. AWT, Swing, JavaFX & SWT 4
E JFace ListSelectionDialog & Mouse-Events? AWT, Swing, JavaFX & SWT 2
lumo SWT Composite Mouse Track Lisetner AWT, Swing, JavaFX & SWT 2
K JButton nur dann aktivieren, wenn die Mouse 3 Sek. über dem Button bleibt AWT, Swing, JavaFX & SWT 2
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
R JTable - eigener Editor - Mouse events AWT, Swing, JavaFX & SWT 2
H fwststellen, ob sich Mouse auf dem Rand befindet AWT, Swing, JavaFX & SWT 3
Dit_ Buttons Mouse-Over Effekt AWT, Swing, JavaFX & SWT 8
R Key und Mouse Events AWT, Swing, JavaFX & SWT 2
Iron Monkey JTable 2 Selektionsfarben Mouse-Event AWT, Swing, JavaFX & SWT 8
D Mouse Koordinaten AWT, Swing, JavaFX & SWT 2
P Mouse Listener beenden AWT, Swing, JavaFX & SWT 14
raptorrs JFrame nur anzeigen, solange die Mouse gedrückt ist AWT, Swing, JavaFX & SWT 3
G JButton Mouse Over Text AWT, Swing, JavaFX & SWT 2
T Mouse Popup AWT, Swing, JavaFX & SWT 2
M Bug; Swing-Worker, Progressbar und Mouse AWT, Swing, JavaFX & SWT 22
R Mouse Wheel funktioniert nicht im JDialog ! AWT, Swing, JavaFX & SWT 4
T mouse-event auf jcolorchooser AWT, Swing, JavaFX & SWT 2
M eine zeichnen beim mouse ziehen AWT, Swing, JavaFX & SWT 8
K Mouse Events der Scrollbar/pane AWT, Swing, JavaFX & SWT 2
V JPopupMenu Problem und Tipp zu mouse/key AWT, Swing, JavaFX & SWT 3
S Mouse-Event in JTable AWT, Swing, JavaFX & SWT 3
K Mouse Position nach Drag und Drop? AWT, Swing, JavaFX & SWT 4
M Grafikobjekte mit Mouse auswählen und verschieben AWT, Swing, JavaFX & SWT 2
D JLabel aus einem Mouse- bzw. KeyListener aendern AWT, Swing, JavaFX & SWT 2
M Auf einem Bild eine Markierung aufziehen AWT, Swing, JavaFX & SWT 3
Z JPanel wird erst durch aufziehen des Fensters sichtbar AWT, Swing, JavaFX & SWT 3
P Formen in verschiedee Richtungen aufziehen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben