Zum Inhalt springen

Panels fixieren


BenjieAul

Empfohlene Beiträge

Hi,

Ich habe ein Problem, was ich einfach nicht bewältigt bekomme. Also ich habe ein Fenster. Auf dem liegt erstmal ein Panel und darauf dann weitere 3 Panels. So nun habe ich mit dem GridBagLayout alles schön sortiert gehabt und so habe oben 2 Panels nebeneinander und unten ein großes, wo ein JTextAreaPanel druffliegt. So nun möchte ich, dass wenn der USer das Fenster nach unten zieht, sich nur unten das Panel weiter bewegt und nicht auch noch das Panel oben, da oben nur eine Anmeldemaske liegt.

Wäre nett wenn ihr mir helfen könntet =)

Link zu diesem Kommentar
Auf anderen Seiten teilen

In der API-Doc steht zu fill:

This field is used when the component's display area is larger than the component's requested size.

Und da les ich raus, dass, wenn Du Deine Komponente grösser baust (ziehst) als Dein Inhalt braucht, dass dann der Inhalt mit vergrössert wird. Und das ist es, was Du willst.

Das in Verbindung mit weightx und weighty (wie soll überschüssiger Platz verteilt werden) sind Deine Freunde.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

So nun möchte ich, dass wenn der USer das Fenster nach unten zieht, sich nur unten das Panel weiter bewegt und nicht auch noch das Panel oben, da oben nur eine Anmeldemaske liegt.

ich will eben nicht, dass es sich mit vergrößert. Oben soll ja alles starr bleiben!

Also was jetzt? Die beiden oberen sollen starr bleiben, das untere sich vergrössern?

Alle drei sollen starr bleiben?

Erklär mal genauer, was Du willst.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

ich habe Dir jetzt mal einen BeispielFrame gebaut, in dem drei JPanels liegen, die mit GridBagLayout gelayoutet werden.

Spiel doch mal mit den Groessen weightx und weighty, anchor und fill.

Beschrieben steht das in http://www.javabuch.de oder in der API-Dok.

Ich kann mit diesen drei Panels machen, was ich will. Es funktioniert.

Ansonsten wirst Du Dich wirklich noch ein wenig genauer erklären müssen.

import java.awt.*;
import javax.swing.*;

public class LayoutTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame("LayoutTest");
GridBagLayout layout = new GridBagLayout();
GridBagConstraints constraints;
JPanel panelOne = new JPanel();
JPanel panelTwo = new JPanel();
JPanel panelThree = new JPanel();

panelOne.setBackground(Color.RED);
panelTwo.setBackground(Color.BLUE);
panelThree.setBackground(Color.YELLOW);

constraints = new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(2, 2, 2, 2), 200, 100);
layout.setConstraints(panelOne, constraints);

constraints = new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, new Insets(2, 2, 2, 2), 200, 100);
layout.setConstraints(panelTwo, constraints);

constraints = new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 200, 100);
layout.setConstraints(panelThree, constraints);

frame.getContentPane().add(panelOne);
frame.getContentPane().add(panelTwo);
frame.getContentPane().add(panelThree);
frame.getContentPane().setLayout(layout);
frame.pack();
frame.show();
}
}[/PHP]

[EDIT]Ja, ich weiss, der Code ist hässlich. ;) Aber er läuft und war schnell geschrieben. [/EDIT]

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bin echt froh, diese Seite gefunden zu haben.

Erstmal vielen Dank für deine Bemühungen, wollte gerade den Code kompilieren, aber dabei is mir Ultra Edit flöten gegangen. Naja, ich probiere ihn dann mal morgen aus.

Also nochmal zur Beschreibung.


+---------------+--------------------+

|               |                    |

|Panel 1        |   Panel 2          |

+---------------+--------------------+

|              Panel 3               |

|                                    |

+------------------------------------+

Also so sieht das Ding aus. Nun möchte ich das die Panels 1 und 2 fixiert bleiben und man nur das Panel 3 nach unten ziehen kann. Verstehst du was ich meine?

Wenn ich unten an dem Rand ziehe, soll nicht das Panel 1 u8nd 2 größer werden, sondern ne feste Größe haben.

Muss mal gucken, ob du das in deinem Prog drinnen hast.

Danke schonmal für die Mühen die du dir gemacht hast und vll. noch machst =)

Mit freundlichen Grüßen

Benjamin Aul

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, dann zum Endspurt, ;)

Ich habe jetzt den Code soweit abgeändert, das die oberen Panels nebeneinander liegen und nur in die Breite wachsen dürfen. Sollen Sie das auch nicht, dann nimm Ihnen einfach weightx oder setze fill auf GridBagConstraints.NONE.

Hier mal der Code:


import java.awt.*;
import javax.swing.*;

public class LayoutTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame("LayoutTest");
GridBagLayout layout = new GridBagLayout();
GridBagConstraints constraints;
JPanel panelOne = new JPanel();
JPanel panelTwo = new JPanel();
JPanel panelThree = new JPanel();

panelOne.setBackground(Color.RED);
panelTwo.setBackground(Color.BLUE);
panelThree.setBackground(Color.YELLOW);

constraints = new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 200, 100);
layout.setConstraints(panelOne, constraints);

constraints = new GridBagConstraints(1, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 200, 100);
layout.setConstraints(panelTwo, constraints);

constraints = new GridBagConstraints(0, 1, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 200, 100);
layout.setConstraints(panelThree, constraints);

frame.getContentPane().add(panelOne);
frame.getContentPane().add(panelTwo);
frame.getContentPane().add(panelThree);
frame.getContentPane().setLayout(layout);
frame.pack();
frame.show();
}
}[/PHP]

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...