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