ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
914
914
EMPFEHLEN
-
Hallo Freunde,
ich möchte in meinem Programm die Position eines Frames speichern. Hierzu verwende ich die Methode componentmoved vom Componentlistener, welcher die x und y Koordinaten in zwei Variablen speichert. Das Problem hierbei ist, tue ich das Fenster maximieren wird componentmoved auch ausgeführt, und die Werte werden durch die Koordinaten der linken obigen ecke überschrieben.
Hat jemand ne Idee wie ich das abfangen könnte? Eine if Bedingung in der componentmoved Methode welche vor dem speichern der neuen Werte überprüft ob das Fenster maximiert ist hilft leider nicht.
Vg Erdal
-
07.03.06 22:55 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Eigentlich reicht es doch die Position des Fensters beim schließen zu speichern und beim öffnen zu laden.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
/** * */ package de.tutorials; import java.awt.Point; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.prefs.Preferences; import javax.swing.JFrame; /** * @author Tom * */ public class RememberWindowPositionExample extends JFrame { static Preferences preferences = Preferences .systemNodeForPackage(RememberWindowPositionExample.class); final static String WINDOW_LOCATION = "WINDOW_LOCATION"; public RememberWindowPositionExample() { super("RememberWindowPositionExample"); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { Point location = e.getWindow().getLocation(); preferences.putLong(WINDOW_LOCATION, ((long) location.x) << 32 | location.y); System.exit(0); } }); long windowPosition = preferences.getLong(WINDOW_LOCATION, 0); int x = (int) (windowPosition >> 32); int y = (int) windowPosition; super.setLocation(x, y); setSize(320, 240); setVisible(true); } /** * @param args */ public static void main(String[] args) { new RememberWindowPositionExample(); } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo Tom,
soweit ist das ja kein Problem. Tue ich das Fenster maximimieren und beenden. Wird die Position 0,0 gespeichert. Ich möchte aber das der vorherige Wert erhalten bleibt. So daß wenn ich dass Programm neustarte das Fenster wieder maximiert geöffnet wird. Wenn ich dann auf verkleinern klicke soll er die Position bekommen die er vor dem Maximieren bei der letzten Nutzung hatte.
------------------
Beispiel
Initialwerte(50,50)
1. Start
Position (50,50)
Verschoben
Position (200,450)
Maximiert
Position (0,0)
Ende (gespeichert werden soll 200,450)
2. Nächster Start
setze Position (200,450)
starte aber Maximiert
dann wird zunächst die Position natürlich (0,0) sein da maximiert
beim verkleinern wird er jedoch auf die Pos(200,450) verschoben
...
-------------
Ich werde es mal so versuchen, das immer die letze und vorletze Position gespeichert werden.
Wenn dann beim nächsten Start der eine Wert 0,0 enstpricht, nehme ich den vorigen. So müsste es theoretisch klappen. Mal schaun.
Vg Erdal
Ähnliche Themen
-
Position eines Fensters speichern
Von port29 im Forum .NET Windows FormsAntworten: 3Letzter Beitrag: 22.04.10, 23:43 -
Popup-Fenster Position
Von angelikamorgan im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 26.06.08, 12:49 -
Position flexibeler Fenster speichern
Von hyps im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 20.02.08, 09:48 -
Windows Xp +fenster position merken
Von Jan-Frederik Stieler im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 03.01.06, 20:48 -
Maus-Position im Fenster abfragen
Von madball im Forum .NET ArchivAntworten: 2Letzter Beitrag: 27.02.04, 13:26





Zitieren

Login





