tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
914
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    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
     

  2. #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ß Tom
     
    Java 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

  3. #3
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    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

  1. Position eines Fensters speichern
    Von port29 im Forum .NET Windows Forms
    Antworten: 3
    Letzter Beitrag: 22.04.10, 23:43
  2. Popup-Fenster Position
    Von angelikamorgan im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 26.06.08, 12:49
  3. Position flexibeler Fenster speichern
    Von hyps im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 20.02.08, 09:48
  4. Windows Xp +fenster position merken
    Von Jan-Frederik Stieler im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 03.01.06, 20:48
  5. Maus-Position im Fenster abfragen
    Von madball im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 27.02.04, 13:26