Standpunkt von Componenten frei bestimmen

Status
Nicht offen für weitere Antworten.

Sneek

Aktives Mitglied
Hi, ich bringe mir Java jetzt schon seit paar Wochen mit Hilfe von diesem Buch bei. Dort werden die einzelnen Komponenten mit LayoutManagern im Fenster angeordnet. Gibt es auch eine Möglichkeit den Standpunkt im Fenster selbst zu bestimmen?
Wenn ich die LayoutManager verwende unterteil ich das Frame meistens in viele Panels und die dann nochmals in Panels um eine gewünschte GUI zu erstellen (trotz der verschiedenen vorgefertigten Layoutmöglichkeiten), aber irgendwie kommt mir das ganze ziemlich umständlich vor, oder ist das in dem Fall sinvoll?

lg Sneek
 

Wildcard

Top Contributor
Bleib bei den LayoutManagern (und arbeitete dich gegebenfalls in die mächtigeren ein).
Wenn du selbst positionierst kann sich die größe nicht anpassen wenn du die größe des Fensters veränderst.
Ausserdem wird das Programm danach nur noch auf deinem Rechner verträglich aussehen, denn andere Nutzer haben
-andere Look and Feels
-andere Schriftarten und Größen
-Andere Themes
-andere Betriebssyteme
-andere Window Manager
-Andere Schreibrichtung

Ausserdem brauchst du viel mehr Code wenn du absolut positionierst und die Wartung wird komplizierter.
 

SebiB90

Top Contributor
Es ist möglich in dem man als LayoutManager einfach null übergibt und dann die komponenten mit setBounds setzt(also die Größe und Position, add muss trotzdem noch sein). Es ist aber SEHR ABZURATEN, es so zu machen. Anderes Look and Feel, anderes System und schon könnte dein null-Layout dahin sein. Außerdem sollte die Positionierung der Element auch nach einem Resize des Fenster gut aussehen. Daher sollte man LayoutManager verwenden, die kümmern sich darum.
Es gibt auch weitere LayoutManager wie z.b. TableLayout und MigLayout, die nicht in der Standard API drin sind. Mit denen muss man weniger verschachteln ;)
 

Ebenius

Top Contributor
Es ist in aller Regel sinnvoll. Man kann auch Komponenten absolut positionieren, das lässt man aber besser bleiben. Mit LayoutManagers hat man zumindest eine realistische Chance, GUIs zu bauen, die Ihre Komponenten korrekt vergrößern / verkleinern, wenn die Fenstergröße sich ändert; Komponenten auch noch dann richtig anzuordnen, wenn die Schriftarten auf dem System anders sind als auf dem Entwicklungsrechner; Komponenten mit unterschiedlichen Sprachen (deutsch, englisch, unterschiedliche Textlänge) richtig anzuordnen; Komponenten auch mit RTL (ComponentOrientation: Right-To-Left) sauber anzuordnen....

Null-Layout funktioniert normaler Weise nur auf einem Rechner wie gewünscht: Auf dem des Entwicklers.

Ebenius
 

Sneek

Aktives Mitglied
Okay, dann versuch ichs weiter mit den LayoutManagern und werd mich noch mit den weiteren Managern befassen, in dem Buch wird nur auf drei LayoutManager (Flow-, Grid- und Borderlayout) eingegangen. Wusst gar nicht, dass so viel Probleme entstehen können bei einem absoluten Standpunkt, erscheint aber logisch.
 

Ebenius

Top Contributor
Man spricht eher vom "Ort". Ein Standpunkt ist eher metaphorisch Ansichtssache. :)

Das wichtigste Layout ist wohl das BorderLayout. Grid- und FlowLayout kann man auch gut gebrauchen. Hin und wieder noch ein BoxLayout. Dann kann man das meiste machen. GridBagLayout ist super, wenn man genau weiß was man tut. Bis man dahin gelangt ist es eher ein Krampf.

Ebenius
 

Sneek

Aktives Mitglied
Gut, da bleib ich vllt. doch erstmal bei den drei genannten. Nur um nochmal meine Zweifel zu mindern.
Ich habe jetzt z.B. ein Frame, das mittels BorderLayout mit zwei Panels (Panel1, Panel2) in West und East unterteilt. Wenn ich jetzt in Panel1 (gewählte Layout Möglichkeit auch BorderLayout) eine Komponente, beispielsweise eine Tabelle, anzeigen möchte, kann ich diese ja auch nur an 5 verschiedenen Standpunkten anzeigen. Das wäre ja alles kein Problem, nur wenn ich Center wähle ist trotzdem das ganze Panel ausgefüllt, auch wenn ich die größe der Tabelle kleiner festgesetz habe - Also müsste ich jetzt praktisch noch, (im falle des "westlichen" Panels)ein, ich nenn es mal Platzhalterpanel, in Panel1 auf der "östlichen" Seite erzeugen, damit die Komponenten aus Panel2 (East) nicht direkt an der Tabelle "drannklatschen"?

Ich hoffe ihr versteht was ich meine... :oops:
 

Ebenius

Top Contributor
Ich verstehe was Du meinst. Aber warum soll denn die Tabelle kleiner werden? Gegebenenfalls hilft der Horizontal- und VerticalGap im BorderLayout, wenn es nur darum geht, ein bisschen Abstand zu erzeugen. Oder ein Border an der Inneren Komponente. Wie soll denn die Tabelle da liegen? Soll sie immer mittig sein, aber ihre Größe nie verändern?

Ebenius
 

Sneek

Aktives Mitglied
Ich verstehe was Du meinst. Aber warum soll denn die Tabelle kleiner werden? Gegebenenfalls hilft der Horizontal- und VerticalGap im BorderLayout, wenn es nur darum geht, ein bisschen Abstand zu erzeugen. Oder ein Border an der Inneren Komponente. Wie soll denn die Tabelle da liegen? Soll sie immer mittig sein, aber ihre Größe nie verändern?

Ebenius

Muss jetzt mal gestehen, dass ich noch nichts von einen Horizontal und VertivalGap gehört habe. Es geht mir eigentlich nur um einen Abstand, dass die Komponenten von Panel1 und Panel2 nicht so aneinander kleben.
 

diggaa1984

Top Contributor
BorderLayout(int hgap, int vgap)
Constructs a border layout with the specified gaps between components.

Das bedeutet du kannst hier Werte in Pixel(? man korrigiere mich wenn das falsch ist :D) angeben, die den Abstand (hgap = horizontal ; vgap = vertikal) zwischen den einzelnen Segmenten des BorderLayouts bestimmen.

Also: hgap = 5 würde bedeuten das zwischen West und Center 5 Pixel frei sind sowie zwischen Center und East .. analog für vgab nur in vertikaler Ausrichtung
 

Sneek

Aktives Mitglied
Das bedeutet du kannst hier Werte in Pixel(? man korrigiere mich wenn das falsch ist :D) angeben, die den Abstand (hgap = horizontal ; vgap = vertikal) zwischen den einzelnen Segmenten des BorderLayouts bestimmen.

Also: hgap = 5 würde bedeuten das zwischen West und Center 5 Pixel frei sind sowie zwischen Center und East .. analog für vgab nur in vertikaler Ausrichtung

Ahh, jetzt kommt mir das ganze schon viel praktischer vor :) Thx
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
L Componenten im JFrame an genaue stelle verschieben. AWT, Swing, JavaFX & SWT 2
V Swing Componenten Array AWT, Swing, JavaFX & SWT 3
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
J Swing Componenten übereinander platzieren. AWT, Swing, JavaFX & SWT 17
M SWT SWT Componenten auf GLCanvas zeichnen AWT, Swing, JavaFX & SWT 3
earlgrey_tea GridBagLayout Componenten proportional vergößern AWT, Swing, JavaFX & SWT 12
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
L Swing Serverbrowser, aber welche componenten? AWT, Swing, JavaFX & SWT 2
H Mit for-schleife die Componenten eines Frames verändern AWT, Swing, JavaFX & SWT 5
H SWT Breite von componenten zu bestimmen AWT, Swing, JavaFX & SWT 2
T JFrame Componenten Problem AWT, Swing, JavaFX & SWT 17
T Swing JSplitPane Componenten ausrichten AWT, Swing, JavaFX & SWT 4
lumo Swing Componenten ersetzen AWT, Swing, JavaFX & SWT 2
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
E Im Frame alle Componenten abrufen AWT, Swing, JavaFX & SWT 2
R Wie kann ich programmatisch Clicks auf Componenten ausfuehren? AWT, Swing, JavaFX & SWT 26
R Thumbpanel bzw. Layout das Componenten in einem Grid anordnet ..? AWT, Swing, JavaFX & SWT 13
D verschieden große Componenten in einem JPanel? AWT, Swing, JavaFX & SWT 2
A Swing: Componenten in einem deaktivierten JPanel AWT, Swing, JavaFX & SWT 2
R HTML Hintergrund für Swing - Componenten AWT, Swing, JavaFX & SWT 2
G Suche 2 Componenten: Splitpane ausblenden / Stecknadel AWT, Swing, JavaFX & SWT 2
G SystemTray BubbleInfo an anderen Componenten anzeigen AWT, Swing, JavaFX & SWT 6
J durchsichtige componenten AWT, Swing, JavaFX & SWT 3
S Componenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
R Componenten eines JFrames updaten AWT, Swing, JavaFX & SWT 11
thE_29 TableRenderer und JPanel => Abfrage auf Componenten Posit AWT, Swing, JavaFX & SWT 2
S Mehere Componenten setEnabled(false) in JToolBar AWT, Swing, JavaFX & SWT 4
M componenten im jframe erst nach fensterveränderung sichtbar AWT, Swing, JavaFX & SWT 2
S verhindern von drag-n-drop von swing componenten AWT, Swing, JavaFX & SWT 2
T Objektorientierung bei Componenten häh? AWT, Swing, JavaFX & SWT 5
D Componenten Problem - aktualisieren nach hinzufügen AWT, Swing, JavaFX & SWT 2
V JTable mit mehreren Componenten in einer Spalte ? AWT, Swing, JavaFX & SWT 6
G Swing Buttons in Layouts frei platzieren AWT, Swing, JavaFX & SWT 7
X Frei nutzbarer HTML Editor AWT, Swing, JavaFX & SWT 13
R Kleine Panels auf einem großen Panel frei platzieren AWT, Swing, JavaFX & SWT 11
M Bilder frei positionieren? AWT, Swing, JavaFX & SWT 29
C JLabel in JMenuBar frei platzieren AWT, Swing, JavaFX & SWT 2
R Komponenten frei per Drag&Drop in (z.B.) Null-Layout bew AWT, Swing, JavaFX & SWT 2
T Swing: frei Objekte anordnen AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen


Oben