Y-Position mit get-/setLocation() unter Linux/Enlightement16 inkonsistent

H

HobbyProgger

Gast
Hallo Leute, ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen:

ich speichere beim Schließen eines Fensters dessen Position [ wnd.getLocation() ]. Beim nächsten Programmstart werden die alten Positionswerte wieder ausgelesen und die Position des Fensters damit gesetzt [ wnd.setLocation( config.windowPosition ) ]. Leider wird das Fenster dabei immer ein Stückchen weiter unten gezeichnet. Es sind immer 21 Pixel, was genau der Höhe der Titelleiste entsprechen dürfte (Enlightement16).

Als "Workaround" lese ich momentan nach dem Setzen der Fenster-Koordinaten diese gleich wieder aus und berechne die Differenz zum ursprünglichen gespeicherten Wert. Wenn ich dann wie folgt das Fenster um diese Different verschoben zeichne:

config.windowPosition.y -= diff;
wnd.setLocation( config.windowPosition );

Dann stimmt die Fensterposition bei jedem zweiten Programmstart leider immer noch nicht... (zur Hälfte stimmte es dann aber)

Woran liegt das? Was mache ich falsch??
 

Ebenius

Top Contributor
Hm. Das klingt komisch. Sicher, dass Du synchron zum EDT arbeitest? Debug Dich doch mal in setLocation rein und guck mal wie das kommt... Ansonsten hab ich auch keine Ahnung.

Ebenius
 
H

HobbyProgger

Gast
Hallo Ebenius!

Hm. Das klingt komisch.
Ja, verhält sich auch nur unter Linux (in meinem Falle Enlightement16 Desktop) so - nicht aber unter Windows, da funktioniert es!

Sicher, dass Du synchron zum EDT arbeitest?
Keine Ahnung. Meinst du damit Event-Dispatch-Thread-synchron?

Debug Dich doch mal in setLocation rein und guck mal wie das kommt...
Da kommen nur tausende von Funktionsrufen, welche kaum weiter helfen...
Allerdings kann ich soviel sagen, dass die Position vom Frame richtig zurückgegeben wird, diese auch korrekt in die Datei geschrieben und wieder korrekt gelesen wird. Die Position wird ansich auch richtig gesetzt, nur passiert beim anzeigen des Frames scheinbar noch etwas mehr - interessant ist folgendes Phänomenon:

Code:
	// Wenn ich mir vor und nach dem Sichtbarmachen des Fensters dessen Position anzeigen lasse,
	// dann werden oft (aber nicht immer!) unterschiedliche Koordinaten ausgegeben.
	// (wenn zuvor keine Fensterposition definiert wurde, erhält man die nachstehenden Ausgaben)
	System.out.println(this.getX() + "x" + this.getY());	// 0x0
	this.setVisible( true );
	System.out.println(this.getX() + "x" + this.getY());	// 1x21 (manchmal aber auch 0x0!)
	// Die Angaben  ensprechen 100%ig der FrameBorder: 21 Pixel hohe Titelleiste, 1 Pixel breiter linker Rand!

	// Den Fehler könnte man mit folgendem Kode nach this.setVisible(true); korrigieren:
	this.setLocation( config.windowPosition.x - this.getX(), config.windowPosition.y - this.getY() );
	// Allerings klappt dies wie erwähnt nicht immer! - Außerdem entsteht so ein hässlicher Sprung beim Anzeigen,
	// da das Fenster erst angezeigt werden muss und dann erst dessen Position gesetzt wird.

Ich halte das Ganze für einen Bug. Wie sehts du das?

Oder sollte ich die Position nicht im Konstrukter festlegen? Aber wie bekomme ich das dann hin, ohne den Anwender der Klasse zu einem Extra-Befehl zu nötigen?

Gibt es vlt. eine andere Methode, mit welcher man die interene Positionsänderung erzwingen kann (wenn möglich mit Sicherheit).

Oder sollte ich es mal mit Frames anderer Bibliotheken probieren?
- Welche eignen sich zum Substituieren, so das kaum Änderungen am restlichen Kode nötig werden?
 

Ebenius

Top Contributor
Bau Dir mal deine main-Methode so um und probier damit:
Java:
public static void main(final String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
    public void run() {
      createAndShowGui(args);
    }
  });
}

static void createAndShowGui(String[] args) {
  // was auch immer vorher in main() stand...
}
Ebenius
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
D JInternalFrame wechselt Position beim ersten Click AWT, Swing, JavaFX & SWT 0
S GUI Kreuz zeichnen und Position ausgeben AWT, Swing, JavaFX & SWT 3
C JavaFX Window-Position AWT, Swing, JavaFX & SWT 3
E JavaFX Cursor-Position im ScrollPane AWT, Swing, JavaFX & SWT 0
J BorderPane Position AWT, Swing, JavaFX & SWT 3
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
F JScrollPane Position setzen (x=0, y=0) AWT, Swing, JavaFX & SWT 2
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
T SWT Wie kriege ich die Position des Textfeldes raus? AWT, Swing, JavaFX & SWT 19
C LayoutManager JFrame größe und ausrichtung + Position von Fensterelementen AWT, Swing, JavaFX & SWT 2
B Popup auf der Textcoursor-Position AWT, Swing, JavaFX & SWT 5
O Swing Spalten-Position nach verschieben AWT, Swing, JavaFX & SWT 6
0 Swing JTextField - Position ? AWT, Swing, JavaFX & SWT 2
E Swing Objekt zu Position (Point) bewegen AWT, Swing, JavaFX & SWT 2
C Label wird nicht an der richtigen Position angezeigt.. AWT, Swing, JavaFX & SWT 7
TheWhiteShadow Swing Document Text Position in Pixel AWT, Swing, JavaFX & SWT 2
M Jtable - wie position einer Celle bestimmen bei Multiselect AWT, Swing, JavaFX & SWT 4
B MessageBox Position Verändern AWT, Swing, JavaFX & SWT 8
B Swing Komponente an Position eines Objektes ausgeben lassen AWT, Swing, JavaFX & SWT 3
B Position in einem Bild ermitteln AWT, Swing, JavaFX & SWT 3
B [ERLEDIGT]gui problem(genaue position von buttons ect.) AWT, Swing, JavaFX & SWT 9
M Position eines JLabels mit getX() auslesen AWT, Swing, JavaFX & SWT 2
M Position eines JLabels speichern? AWT, Swing, JavaFX & SWT 3
D Swing PopupMenu immer an gewünschte Position? AWT, Swing, JavaFX & SWT 2
W Swing Bild zeichnen wenn Maus an bestimmter Position ist AWT, Swing, JavaFX & SWT 4
R Swing GlazedLists UND Problem mit der Position des Cursors AWT, Swing, JavaFX & SWT 2
M 3D-Grafik Probleme mit Position der ViewPlatform AWT, Swing, JavaFX & SWT 4
C Caret Position mit X-Y-Koordinaten ermitteln AWT, Swing, JavaFX & SWT 2
J Swing Problem - Abspeichern JSplitPane Position AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Feste Position einer Komponente auf Glasspane AWT, Swing, JavaFX & SWT 6
V Position der JScrollBar ändern AWT, Swing, JavaFX & SWT 5
T Z-Position der ViewPlatform? AWT, Swing, JavaFX & SWT 3
N Swing JTextArea/JScrollpane: JScrollbar position AWT, Swing, JavaFX & SWT 8
B aktuelle Position des Fensters ermitteln AWT, Swing, JavaFX & SWT 3
sylo Position des Icons bei JMenuItem AWT, Swing, JavaFX & SWT 11
K JLayeredPane Elemente auf gleicher Position AWT, Swing, JavaFX & SWT 7
E Swing JLabel ändert seine Position nach setText AWT, Swing, JavaFX & SWT 2
G Absolute Position von Komponenten AWT, Swing, JavaFX & SWT 3
hdi SWT FileDialog wird an scheinbar beliebiger Position angezeigt AWT, Swing, JavaFX & SWT 2
K mehrere JTextFields - wie finde ich die Cursor-Position? AWT, Swing, JavaFX & SWT 5
lumo SWT Absolute position einer Composite/Control AWT, Swing, JavaFX & SWT 5
ElViZ End-Position eines gezeichneten Strings ermitteln. AWT, Swing, JavaFX & SWT 2
H Swing Illegal component position! AWT, Swing, JavaFX & SWT 2
Pithecanthropus Swing JScrollBar-Position festlegen.. AWT, Swing, JavaFX & SWT 3
K Postion Y im Frame != Position Y ?? AWT, Swing, JavaFX & SWT 16
R Position einer Componente? AWT, Swing, JavaFX & SWT 9
A Label hat falsche Position AWT, Swing, JavaFX & SWT 4
M Scrollbar anpassen (Position) AWT, Swing, JavaFX & SWT 6
M GridBagLayout - Position immer zentriert AWT, Swing, JavaFX & SWT 5
J absolute Position einer JComponent ermitteln AWT, Swing, JavaFX & SWT 4
J JSplitpane separator soll nicht seine Position veraendern? AWT, Swing, JavaFX & SWT 3
P JButton Position rausfinden beim GridBagLayout AWT, Swing, JavaFX & SWT 2
A erneutes Öffnen jInternalFrame: illegal component position AWT, Swing, JavaFX & SWT 4
X Dynamische linien (Position und Länge) AWT, Swing, JavaFX & SWT 4
G position im FlowLayout AWT, Swing, JavaFX & SWT 11
B Thumbnail-Position per Mausklick ändern AWT, Swing, JavaFX & SWT 3
& Position eines Fensters nicht verändern AWT, Swing, JavaFX & SWT 8
A Position des Fensters verändern AWT, Swing, JavaFX & SWT 21
U JTable Position der Spalte abfragen AWT, Swing, JavaFX & SWT 7
D JInternalFrame iconified Position nach parent-resize AWT, Swing, JavaFX & SWT 2
U Problem mit JButton (Position & Größe) AWT, Swing, JavaFX & SWT 7
W Schnappen der Größe und Position AWT, Swing, JavaFX & SWT 7
S Falsche Position, Elemente erscheinen nicht, Flackern AWT, Swing, JavaFX & SWT 6
S Position eines Fensters festlegen AWT, Swing, JavaFX & SWT 2
L Menu Position verändern? AWT, Swing, JavaFX & SWT 24
P JPanel im BorderLayout feste Größe/Position zuordnen AWT, Swing, JavaFX & SWT 3
T jTable / Spaltenbreite und Position AWT, Swing, JavaFX & SWT 2
J InternalFrames Grösse Position AWT, Swing, JavaFX & SWT 3
vogella JScrollPane - Position setzen der Scrollbalken AWT, Swing, JavaFX & SWT 5
M JPanel Position tut nicht, was sie soll AWT, Swing, JavaFX & SWT 8
T jTable Colum feste position AWT, Swing, JavaFX & SWT 3
S Position von Labels, Buttons, etc. festsetzen und Scrollen AWT, Swing, JavaFX & SWT 4
M GridBagLayout - Component Position AWT, Swing, JavaFX & SWT 4
B Setzen von Position > 90 bei JScrollbar nicht möglich AWT, Swing, JavaFX & SWT 3
M Position im JTree veraendern AWT, Swing, JavaFX & SWT 3
A Position im Text bei Rechtsklick AWT, Swing, JavaFX & SWT 7
T JScrollPane Scrollbar-Position AWT, Swing, JavaFX & SWT 2
Y BasicArrowButton + Größe und Position AWT, Swing, JavaFX & SWT 7
K Mouse Position nach Drag und Drop? AWT, Swing, JavaFX & SWT 4
lin ?JDialog?-nur best. Grösse und Position AWT, Swing, JavaFX & SWT 2
B JLabel ändert seine Position AWT, Swing, JavaFX & SWT 7
M Position von Eingabe-Fenster AWT, Swing, JavaFX & SWT 5
R text offset versus JTextComponent caret position AWT, Swing, JavaFX & SWT 6
G Probleme mit der Position eines JPanels AWT, Swing, JavaFX & SWT 2
T Größe und Position eines JLabels ermitteln AWT, Swing, JavaFX & SWT 3
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
C Swing Komponente mit setLocation auf JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 3
B JLabel mittels Timer und setLocation verschieben AWT, Swing, JavaFX & SWT 3
J Swing setLocation Aufruf in JApplets 20 mal langsamer als in JFrames AWT, Swing, JavaFX & SWT 8
J JFrame.setLocation() AWT, Swing, JavaFX & SWT 19
W Swing Problem: setLocation und setBounds werden ignoriert... AWT, Swing, JavaFX & SWT 3
N rechtsklick und popup setlocation AWT, Swing, JavaFX & SWT 2
J JLabel setLocation AWT, Swing, JavaFX & SWT 4
K setSize und setLocation geht nicht AWT, Swing, JavaFX & SWT 8
C setLocation() beim JDialog AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben