![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Neuer Benutzer
Registriert seit: 01.11.2007
Beiträge: 3
|
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 |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
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 |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 12.06.2006
Beiträge: 189
|
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 |
|
|
|
|
|
Nach oben #4 | |
|
Erfahrener Benutzer
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 503
|
Zitat:
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 |
|
|
|
|
|
|
Nach oben #5 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
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. |
|
|
|
|
|
Nach oben #7 | |
|
Erfahrener Benutzer
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 503
|
Zitat:
Wenn es nur das eine Element ist, ist ein komplett eigener Layoutmanager natürlich besser.
__________________
Weißt Bescheid - Scheiß wie weit |
|
|
|
|
|
|
Nach oben #8 |
|
Neuer Benutzer
Registriert seit: 01.11.2007
Beiträge: 3
|
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 |
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 17.08.2005
Beiträge: 425
|
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. |
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
Ä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 |
|
|
|
|
|
Nach oben #11 |
|
Neuer Benutzer
Registriert seit: 01.11.2007
Beiträge: 3
|
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 |
|
|
|
|
|
Nach oben #12 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
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 |
|
|
|
|
|
Nach oben #13 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Ich geh mal etwas Off-Topic, weil ich's ganz interessant finde (richtet sich jetzt an mepeisen
|
|
|
|
|
|
Nach oben #14 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
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 |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|