Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Desktop-Applikationen und Grafik > Inhalt exakt zentrieren, unabhängig von Auflösung
Antwort
 
Themen-Optionen
Alt 01.11.2007, 20:56   Nach oben    #1
Neuer Benutzer
 
Registriert seit: 01.11.2007
Beiträge: 3
Standard Inhalt exakt zentrieren, unabhängig von Auflösung

Hallo,
ich habe eine Anwendung die im Vollbildmodus gestartet wird.
Ich möchte nun erreichen, dass ein Inhalt (z. B. auf einem JPanel) mit einer exakten Größe von (800x600pixeln) immer genau im Zentrum bleibt.
Ich habe schon alle möglichen LayoutManager durch probiert, aber ich bekomme es einfach nicht hin, dass ich das Panel in der Mitte habe, wohingegen der Rest automatisch ausgefüllt wird.
X X X
X o X
X X X

x sollen variable Bereiche sein, die den Rest unter sich aufteilen
o soll der Inhalt mit fester Größe sein.

Ich hab es mit BorderLayout, BoxLayout, GridLayout versucht.
Dabei habe ich unter anderem "Glue" benutzt oder dem Panel mit setSize eine Größe verpasst. Ging alles nicht. Auch setPrefSize und setMinimSize hab ich versucht. Klappt alles nichts.


Lg liroy
liroy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.11.2007, 07:50   Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Ich gehe davon aus, dass es dir um die Mitte des Anzeigefensters geht unabhängig von der Bildschirmauflösung? Ist ja im Vollbild auch tatsächlich so
AdHoc fällt mir dazu das TableLayout ein. Ich kann dir jetzt nur leider nicht hundertprozentig einen guten Link liefern, da da im Netz mehrere Versionen existieren und einige funktionieren glaube ich nicht. https://tablelayout.dev.java.net/ ist aber hoffentlich eine gute Quelle.

Mit dem Ding kannst du beispielsweise sagen: 3 Spalten, 3 Zeilen.
Spalten: FILL, Preferred, FILL
Zeilen: FILL, Preferred, FILL

Mit nem GridBag funktioniert das zwar auch, hat aber beispielsweise gewisse Probleme bei ScrollPanels usw.
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.11.2007, 18:12   Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 12.06.2006
Beiträge: 189
Standard

Hm, in HTML mit CSS würd ich das so machen:
DIV-Box fixed an Position 50%/50%, margin-top/-left auf minus Hälfte der Höhe/Breite der Box.
Ich weiß nicht, ob soetwas auch mit Java geht. Vielleicht hilfts aber .
FloB ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.11.2007, 21:20   Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 503
Standard

Zitat:
Zitat von FloB Beitrag anzeigen
Hm, in HTML mit CSS würd ich das so machen:
DIV-Box fixed an Position 50%/50%, margin-top/-left auf minus Hälfte der Höhe/Breite der Box.
Ich weiß nicht, ob soetwas auch mit Java geht. Vielleicht hilfts aber .
Theoretisch schon (dafür müsste man nur nen kompletten, unorthodoxen und überkomplizierten Layoutmanager schreiben oder ohne arbeiten und für jedes Element ne eigene Anordnung definieren, ein riesen Aufwand, einfach totaler Quatsch), die meisten Grafikbibliotheken für Software-GUI unterscheiden sich aber sehr stark von der Dokumentendarstellung für HTML o.ä. Java bzw. das hier verwendete Swing funktioniert einfach total anders^^

Wenn das von mepeisen vorgeschlagene Tablelayout nicht funktioniert, könntest Du einen Layoutmanagers entwickeln, der eben genau das macht, auf Basis von Border- oder GridLayout sollte das kein allzugroßer Aufwand sein.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.11.2007, 18:52   Nach oben    #5
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Dafür wär ein eigener LayoutManager sicher nicht die verkehrteste Wahl. Ist'n simples Problem und hat ne simple Lösung. Wobei ich nicht weiß, was man da mit Border/GridLayout als Basis soll.
Auf jedenfall ist das ne gute Übung für nen ersten LayoutManager.

Dazu sollte man aber sagen, dass es keine besonders gute Idee ist, soviel (potenziellen) Platz zu verschenken. Außerdem ist es aus ergonomischer Sicht deutlich sinnvoller, die Komponenten links oben zu plazieren (der Benutzer wird immer dort zuerst hingucken, bei deinem Modell wird er stets den Beginn der Anwendung suchen müssen). Na ja, hängt aber wohl auch von der Anwendung ab.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.11.2007, 20:23   Nach oben    #6
Erfahrener Benutzer
 
Registriert seit: 12.06.2006
Beiträge: 189
Standard

Hats doch geholfen
Noch ein Vorteil: Einmal Layoutmanager, immer Layoutmanager. Es lebe Recycling, auch bekannt als Modularität
FloB ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2007, 00:59   Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 503
Standard

Zitat:
Zitat von pago Beitrag anzeigen
Dafür wär ein eigener LayoutManager sicher nicht die verkehrteste Wahl. Ist'n simples Problem und hat ne simple Lösung. Wobei ich nicht weiß, was man da mit Border/GridLayout als Basis soll.
Aus dem Post kann man nicht genau ersehen, ob um das zentrierte Element noch weitere angeordnet werden sollen, dass hatte ich durch den beitrag von mepeisen irgendwie im Kopf; wenn das der Fall sein sollte, ist es imo schon besser, einen bestehenden Layoutmanager so zu modifizieren, dass das mittlere Feld immer zentriert ist und die anderen Elemente im restlichen Platz verteilt werden.
Wenn es nur das eine Element ist, ist ein komplett eigener Layoutmanager natürlich besser.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2007, 21:20   Nach oben    #8
Neuer Benutzer
 
Registriert seit: 01.11.2007
Beiträge: 3
Standard

Hey!
Entschuldigung, dass ich erst jetzt antworte. Mein Internet war "kaputt".
Ich bin überwältigt von der Vielzahl der Antworten, aber auch etwas verwundert, dass es anscheinend keine "einfache" Lösung gibt.

Wie "flob" schon meinte, ich dachte da auch sofort an eine Art FrameSet wie man es aus HTML kennt.

Zur Frage von "$traight-$hoota":
Nein ich möchte bewusst keine Elemente um das zentrale Element haben. Würde ich dies wollen so könnte ich nämlich mein GridLayout benutzen, mir die Auflösung holen um rechnerisch Füllelemente anzulegen. (dies könnte funktionieren)

Das GridLayout funktionierte ja schon ganz gut, bis auf die Tatsache, dass es alle Felder gleich groß macht.

Anwendung? Leserichtung?
Ist eine Übung für's Studium. Soll ein kleines Spiel werden.

Ich werde den Vorschlag mit dem TableLayout von "mepeisen" mal versuchen und gebe euch dann eine Antwort.

Vielen Dank
liroy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2007, 04:23   Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 425
Standard

Also eine einfache,aber nach meinem Wissen verhasste Möglichkeit wäre auch ein Null-Layout ( container.setLayout(null); )

Da es in diesem Fall nur ein Component an einer bestimmten Stelle angezeigt wird, ist es kein großer Aufwand, den einmal richtig zusetzen.
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2007, 13:08   Nach oben    #10
Erfahrener Benutzer
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Ähhhm. Wieso das Rad nochmal neu erfinden? Das TableLayout macht genau das alles. Und das recht gut. Man definiert sich je eine Füllspalte/Zeile für oben/unten/links/rechts und setzt die Constraints auf Fill. Der eigentliche Inhalt besteht entweder aus einer Zelle (dann hats wie im Beispiel 3 Spalten/3 Zeilen) oder aus mehreren Zellen und stehen dann auf Preferred. Dadurch werden die Inhalte genau so breit, wie sie wollen und sind trotzdem zentriert.

Da brauchst wirklich keinen eigenen LayoutManager. Das TableLayout zusammen mit den Standard-Swing-Layouts decken nach meiner Erfahrung 100% aller Anforderungen ab. Lediglich "komplizierte" Quellen, wie beispielsweise HTML/CSS-Quellen werden nicht abgedeckt, für sowas nutzt man aber andere Mechanismen.

Das einzige Problem am TableLayout ist, die richtige Version zu finden. Die verlinkte von der Java.Net Seite sollte aber funktionieren.

Auch variierende Abstände kriegt das Layout gut hin oder prozentuale Größen. Es kriegt auch problemlos das hin, was man aus HTML unter Spans kennt. Also das Verbinden von Zellen. Das Layout kann man auch gut in Excel o.ä. vorzeichnen, da es genauso funktioniert
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2007, 17:40   Nach oben    #11
Neuer Benutzer
 
Registriert seit: 01.11.2007
Beiträge: 3
Standard

Ich hab das von "mepeisen" vorgeschlagene Layout jetzt mal versucht. Es funktioniert tatsächlich genau so wie ich es mir vorgestellt habe.

Vielen Dank!

"Eclipse" sagt mir zwar noch "cannot resolve type: TableLayout" aber es läuft dennoch. Import-Anweisung habe ich, habe auch den Ordner (Info ... ) mit in meinem Projektordner. Na ja werd ich schon noch finden.


Lg liroy
liroy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2007, 18:05   Nach oben    #12
Erfahrener Benutzer
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Da müsst man wissen, wie dein Projekt strukturiert ist, bevor man dir helfen kann. Wäre aber eher was fürs Eclipse-Forum
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2007, 18:26   Nach oben    #13
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Ich geh mal etwas Off-Topic, weil ich's ganz interessant finde (richtet sich jetzt an mepeisen Hast du dir schonmal Mikaels MiGLayout angesehen? Also auch (bzw. im speziellem) unter dem Gesichtspunkt der Komplexität?
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2007, 18:48   Nach oben    #14
Erfahrener Benutzer
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

ne.
Derzeit auch wenig Bedarf. Aber wenn ich mal wieder was mit Java treibe, behalte ich es mal im Hinterkopf.
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:18 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

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