Fenster ohne Rahmen verschieben

Stigma

Gesperrt
Ich habe ein Programm geschrieben das folgenden Befehl in der void main benutzt: fenster.setUndecorated(true);

Dieser Befehl zeigt das Fenster ohne Rahmen (die Titelzeile gehört ebenfalls dazu) an.
Nun möchte ich aber dieses Fenster trotzdem verschieben vergrößern und verkleinern.
Ich habe den Rahmen und die Titelzeile durch meinen eigenen Style ersetzt.
Icon, Titel, Minimieren, Maximiren und Schließen sind immer noch vorhanden.
 
Hey,
das ist keine leichte aufgabe, die du dir da eingebrockt hast. Ich hatte auch mal solche ähnlichen Problem und habs nach unten dargestellter Verfahren gelöst. Aber versuch mal folgende Hinweise: (ich geh mal davon aus, dass du mit vergrößern und verkleinern das direkte skalieren des fensters meinst)
auf dein Fenster nen MouseListener und MouseMotionListener aktivieren
Am besten erstellst du dir zwei int werte für die zwei Abläufe (Skalieren und Verschieben). dann in den jeweiligen Methoden über ne switch() case anweisung für jeden Modus die entsprechenden befehle eintragen.

Ablauf von verschieben des Fenster:
- Aktivierung der Verschiebung über mouseMoved, wenn diese ober in der leiste oder an einem von dier gewünschten punkt ist)
- Verschieben bei mouseClicked und Position auf dem Bildschirm merken in der methode mousePressed
- verschieben in der methode mouseDragged (hier jeweils die Positionen des Events auslesen und davon die gemerkte Position abziehen, diesen differenzbetrag von deiner fensterposition abziehen

Ablauf von Skalierung des Fensters:
- Aktivierung der Skalierung über mouseMoved, wenn diese in der unteren rechten Ecke ist
- bei mousePressed Position merken
- bei mouseDragged den Differenzbetrag der Position vom Event bezüglich der gemerkten Position ermitteln und auf die Fenstergröße umsetzen

Wie gesagt, ist ne ganz schön komplexe sache, am besten immer stück für stück entwickeln, d.h. erstmal versuchen, die entsprechenden mauspositionen korrekt abzufragen (ne ganz einfache technik: wenn die maus in nem bestimmten bereich sein soll, mal den Cursor ändern, dann siehst du sofort, obs geklappt hat)

Viel glück und bis denne
 
Toll, jemand der sich ebenfalls mit dem Problem beschäftigt hat. Ich werde mich am Wochenende hinsetzen und es in Codesprache übersetzen. Danke für die genauen Schritte, die werden mir helfen.

Schöner wer’s jemand hätte einen fertigen Code, aber für so ein spezielles Problem, den hat man sicherlich nicht einfach so in der Tasche. Danke b600forever das du dir die mühe gemacht hast.
 
Zurück