Auto resize-Einstellung

Ideen, wie TV-Browser verbessert werden kann
Antworten
Benutzeravatar
materthron
Junior Member
Beiträge: 32
Registriert: 23 Dez 2005, 16:05

Auto resize-Einstellung

Beitrag von materthron »

Hallo!
Unter Windows, OS X und Linux ist es mittlerweile zum Standard geworden, dass der Fensterinhalt bei Größenänderungen angezeigt wird.

Unter Java/Swing geschieht das standardmäßig nicht. Es gibt aber einen Weg dies auch zu erreichen: Die Methode

Code: Alles auswählen

Toolkit.setDynamicLayout(boolean dynamic)
erlaubt es, genau das zu tun.

Bevor dies geschieht sollte aber mit

Code: Alles auswählen

Toolkit.getDesktopProperty("awt.dynamicLayoutSupported")
geprüft werden, ob das Betriebssystem dynamic layout unterstützt.

Hier ein bisschen Code:

Code: Alles auswählen

Toolkit toolkit = Toolkit.getDefaultToolkit();
if( toolkit.getDesktopProperty("awt.dynamicLayoutSupported") ) {
} else {
     //Häkchen für dynamisches Layout verbergen
     //da es ja nicht benutzt werden kann
   }
Obiges überprüft, ob dynamisches Layout auf dem Betriebssystem verfügbar ist und blendet ggf. das Häkchen, um dieses zu aktivieren, aus.

Diese Abfrage sollte beim ersten Programmstart geschehen. Später sollte das Hinzufügen des Aktivierungs-Häkchens von einem Property abhängen.
Also ca. wie folgt:

Code: Alles auswählen

if(dynamicLayoutSupported) {
  //Häkchen hinzufügen
}
Mit freundlichen Grüßen

materthron
ds10
Site Admin
Beiträge: 19191
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Beitrag von ds10 »

Finde ich ganz gut, nur wozu noch eine extra Einstellung?

Wenn es unterstützt wird kann man es doch einfach einschalten.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Bist du dir sicher das dat deaktiviert ist? Auf meinem Mac jedenfalls nicht. Ich kann verschieben und sehe wie sich alles anpasst. Ich meine unter Linux wäre das auch so.
ds10
Site Admin
Beiträge: 19191
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Beitrag von ds10 »

bodo hat geschrieben:Bist du dir sicher das dat deaktiviert ist? Auf meinem Mac jedenfalls nicht. Ich kann verschieben und sehe wie sich alles anpasst. Ich meine unter Linux wäre das auch so.
Ja, unter Windows wird das tatsächlich erst angezeigt, wenn man diese Einstellung aktiviert.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
hampelratte
Plugin-Developer
Beiträge: 182
Registriert: 08 Mai 2005, 22:53
Kontaktdaten:

Beitrag von hampelratte »

bodo hat geschrieben:Ich meine unter Linux wäre das auch so.
kann ich bestätigen. zumindest in meinem kde sehe ich den inhalt beim verschieben und ändern der größe.
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Aber wieso ist das unter Windows so!? Versteh ich ned. Naja, kannste ja einbauen, damit das da auch schon per default ist.
Benutzeravatar
materthron
Junior Member
Beiträge: 32
Registriert: 23 Dez 2005, 16:05

Beitrag von materthron »

Ich glaube nicht, dass es vernünftig ist, das als Voreinstellung zu nehmen denn die Geschwindigkeit des tvb wird (v. a. auf langsamen Systemen) sehr darunter leiden. Daraus folgen dann wieder Millionen von Beschwerden wegen des langsamen Java usw.

Das was nämlich geschieht ist ganz einfach: das komplette Fenster wird während der Größenänderung einfach immer wieder neu gezeichnet.

Außerdem ist diese Funktion womöglich auf einigen Systemen nicht verfügbar (deshalb auch die Überprüfung beim ersten Programmstart, ob das Aktivierungskästchen hinzugefügt werden soll oder nicht).


mfg ph
ds10
Site Admin
Beiträge: 19191
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Beitrag von ds10 »

materthron hat geschrieben:Ich glaube nicht, dass es vernünftig ist, das als Voreinstellung zu nehmen denn die Geschwindigkeit des tvb wird (v. a. auf langsamen Systemen) sehr darunter leiden. Daraus folgen dann wieder Millionen von Beschwerden wegen des langsamen Java usw.

Das was nämlich geschieht ist ganz einfach: das komplette Fenster wird während der Größenänderung einfach immer wieder neu gezeichnet.

Außerdem ist diese Funktion womöglich auf einigen Systemen nicht verfügbar (deshalb auch die Überprüfung beim ersten Programmstart, ob das Aktivierungskästchen hinzugefügt werden soll oder nicht).


mfg ph
Das sehe ich nicht so, diese Funktion wird vom Betriebssystem verwaltet, wenn ich in Windows XP Fensterinhalt beim Ziehen anzeigen abschalte wird auch beim TVB Fenster der Inhalt bei Größenänderungen/Verschieben nicht mehr angezeigt. Eine zusätzliche Einstellung macht alles nur komplizierter.

Wenn die Funktion irgendwo nicht verfügbar ist wird sie dann ja auch nicht eingeschaltet, ich sehe da wirklich keine Probleme, am Besten noch ein try-catch drum und fertig.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
materthron
Junior Member
Beiträge: 32
Registriert: 23 Dez 2005, 16:05

Beitrag von materthron »

In der API-Dokumentation wird dazu folgendes gesagt:
Note that this feature is not supported on all platforms, and conversely, that this feature cannot be turned off on some platforms. On platforms where dynamic layout during resize is not supported (or is always supported), setting this property has no effect.
Note that this feature can be set or unset as a property of the operating system or window manager on some platforms. On such platforms, the dynamic resize property must be set at the operating system or window manager level before this method can take effect. This method does not change the underlying operating system or window manager support or settings. The OS/WM support can be queried using getDesktopProperty("awt.dynamicLayoutSupported").
Deshalb sollte auch beim ersten Start überprüft werden, ob das OS das unterstützt!
Denn eine Einstellungsmöglichkeit, die nichts ändert, verwirrt den Benutzer nur.

Um das Ganze klarer zu machen:
Es gibt drei Fälle:
1. OS unterstützt "dynamic layout during resize" (kurz dl) und ist abschaltbar
2. dl kann nicht abgeschaltet werden
3. dl wird nicht unterstützt

Das Kontrollkästchen soll nur im 1. Fall angezeigt werden. Wie man das aber macht, weiß ich jetzt auch nicht :? .

Sieht so auch alsob ihr euch da noch ein bisschen den Kopf zerbrechen müsst, oder einfach setDynamicLayout(true) macht und hofft, dass sich keine Benutzer beschweren werden. *g*

Übrigens: Mit isDynamicLayoutActive() kann die aktuelle OS Einstellung abgefragt werden.

Mit freundlichen Grüßen

materthron
ds10
Site Admin
Beiträge: 19191
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Beitrag von ds10 »

Drücke ich mich so unklar aus :?:

Ich sagte doch, es wird einfach immer eingeschaltet, es wird dafür keine extra Einstellung geben. Wenn unter Windows XP (in den Systemeinstellungen->Visuelle Effekte) die Einstellung Fensterinhalt beim Ziehen anzeigen abgeschaltet wird, ist es egal, wie man diese Einstellung in Java setzt. Der Fensterinhalt wird dann nicht mehr beim Ziehen angezeigt, und auch bei Größenänderungen wird die Anzeige nicht aktualisiert bis man die Maus loslässt.

Es wird wohl niemanden stören, wenn sich das TVB-Fenster immer so wie das Betriebssystem es vorgibt verhält.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
fingerhut
Platin Member
Beiträge: 2923
Registriert: 03 Feb 2005, 10:18
Wohnort: Nürnberg

Beitrag von fingerhut »

Es wird wohl niemanden stören, wenn sich das TVB-Fenster immer so wie das Betriebssystem es vorgibt verhält.
ich erwarte das so ;-)
Benutzeravatar
materthron
Junior Member
Beiträge: 32
Registriert: 23 Dez 2005, 16:05

Beitrag von materthron »

Gut! Erledigt.
Antworten