BordeLAyout

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Guten Morgen,

ich habe ein BorderLAyout gemacht und wollte nun haben, dass ich mein Left und right im Borderlayout in meiner GUI größenverändern kann...

Also einfach mit der maus hingehen und dort breiter ziehen.. wie kann ich sowas machen.. momentan hab ich ein Tabbedpanel drin..

Was muss ich in das Boarderlayout hineinpacken, damit ich die größe der einzelnen elemente verändern kann.. bzw nur die von links und rechts?
 
G

Guest

Gast
hmm ok danke, aber er soll ja schon wie Borderlayout aussehen.

Also ich habe links einen Tabbedpane in der mitte eben einige ausgaben und rechts wieder einen Tree die jeweils momentan in Panels liegen.. nun will ich das ich die linke und rechte seite verschieben kann.. die mitte soll so bleiben wie sie ist... wie kann ich das dann mit dem splitpane machen?? weil hab ja 3 abschnitte und nicht 2
 
S

SlaterB

Gast
soll sich vielleicht die Mitte mitbewegen, wenn du links verkleinerst, dann wird rechts größer? ;)
ansonsten ist 'die mitte soll so bleiben wie sie ist' etwas merkwürdig
 
B

bygones

Gast
du kannst nun mal aber nicht das borderlayout hin und herschieben...

mach eine Splitpane und setze den Balken vertical... in dieser Pane sitzt noch eine Splitpane auch mit verticalen Balken.

schau dir die api dazu an - man kann die groessen der jeweiligen Splitteile bestimmen.

dass die mitte immer gleich bleibt ist nicht trivial....
 
G

Guest

Gast
ha ja war mir grad etwas unklar wie ich 3 hin bekome aber habs nun raus ^^

Ja nun kann ich aber mein boarderlayout nicht benutzen... welches Layout kann ich nun benutzen...

Also will oben eine Toolbar haben dann drunter die Split geschichte und ganz unten einen Balken... in welchem Layout mache ich das nun?? ALso untereinander anordnen?
 
S

SlaterB

Gast
mach es schichtenweise,
erstmal nur nach drei Panels untereinander aufteilen,
mit BorderLayout North, Center, South, falls dann Center nicht links und rechts ne Lücke läßt,
sonst halt eines der anderen, FlowLayout, BoxLayout usw,

dann das zentrale Panel auf gleiche Weise in drei Bereiche aufteilen,
vielleich mit zwei Splitpanes:
das erste trennt Links vom Rest (Mitte + Rechts noch als Einheit gesehen),
das zweite teilt den est auf in Mitte und Rechts,
die Splitpanes sind dann aber voneinander unabhängig,

ein n-Splitpane gibts wohl nicht in der Standard-API
 
G

Guest

Gast
hmm ok danke schonmal.

Nun mir zeigt sich grad ein neues Problem...

Ich will den SplitPane nun JPanels zuweisen.. nur das geht nicht wirklich

Code:
 JPanel center = new JPanel();
    
    JSplitPane splitPane = new JSplitPane(
                                          JSplitPane.HORIZONTAL_SPLIT, 
                                          new JLabel("1"),
                                          center);
    JSplitPane splitPane2 = new JSplitPane(
                                           JSplitPane.HORIZONTAL_SPLIT, 
                                           splitPane ,
                                           new JLabel("3"));

Hierbei ist der mittlere Panel nun komplett leer und man kann ihn auch nicht auseinander ziehen..

Code:
 JPanel center = new JPanel();
    
    JSplitPane splitPane = new JSplitPane(
                                          JSplitPane.HORIZONTAL_SPLIT, 
                                          new JLabel("1"),
                                          new JPanel());
    JSplitPane splitPane2 = new JSplitPane(
                                           JSplitPane.HORIZONTAL_SPLIT, 
                                           splitPane ,
                                           new JLabel("3"));

Somit wird ein Panel erstellt in der mitte... jedoch hab ich nun das problem, dass ich dieses mittlere Panel ja nicht ansprechen kann.. würde eben gerne Panels definieren und hier zuweisen, und dann später diesen panels eben wieder neue elemente hinzufügen. Leider bekomme ich das nicht hin. Eine idee??
 
S

SlaterB

Gast
verstehe ich nicht,
wenn du im zweiten Beispiel new JPanel() statt center einfügst ändert sich was?

dass du mit leeren Panels Probleme hast ist ja klar,
also entweder direkt befüllen,
setPreferredSize auf JPanel,
minimumBerei bei SplitPane setzen
oder irgendwelche anderen komischen Dinge,
kann da nun nicht konkretes nennen ;)
 
G

Guest

Gast
Ja also im 2. Bsp kann ich nun wieder alle 3 Elemente des Splitpanels in meiner GUI bewegen und die größe ändern... wenn ich jedoch center nehme was ich zuvor als JPanel deklariert habe.. kann cih die größe des Feldes im SplitPane nicht ändern.

Es ist so als würde dieses Element des Split nihts enthalten wenn ich center eingebe...

Es kommt mir so vor als müsse ich immer new bla bla machen bei der eingabe für den SplitPane..

Es ändert sich somit schon etwas.
 
S

SlaterB

Gast
na wie du meinst,
ich kann es in einem Testprogramm nicht nachvollziehen und halte einen solchen Unterschied für ausgeschlossen,

da wird doch in beiden Fällen das gleiche gemacht,
ob ein Objekt zwischendurch in einer Variable gespeichert wird, kann doch nirgendwo Auswirkung haben,
SplitPane bekommt das gar nicht mit, bekommt in beiden Fällen schlicht ein fertig erzeugtes JPanel-Objekt als Parameter übergeben

ein Problem wäre selbstverständlich, wenn center noch null wäre,
das kann ja nicht funktionieren

Code:
public class TestGUI
    extends JFrame
{

    public TestGUI()
        throws Exception
    {
        JPanel center = new JPanel();
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JLabel("1"), center);
        JSplitPane splitPane2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, splitPane, new JLabel("3"));

        getContentPane().add(splitPane2, BorderLayout.CENTER);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 400);
        setVisible(true);
    }

    public static void main(String[] args)
        throws Exception
    {
        new TestGUI();
    }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben