Keine 2 Buttons in der Süden mit dem BorderLayout?



  • Hi,
    kann man mit dem BorderLayout keine 2 Buttons nebeneinander in den SOUTH legen?
    Wenn ich das so mache:

    final JDialog dialogFenster = new JDialog();                   // nicht modal
    		dialogFenster.setLayout(new BorderLayout(5,5));	
    		dialogFenster.setSize( 200, 500 );
    		dialogFenster.setVisible(false);
    
    		dialogFenster.add(endeImDialog,BorderLayout.SOUTH);
    		dialogFenster.add(speichern,BorderLayout.SOUTH);
    

    (wird später auf setVisible(true) gesezt)

    dann legt sich der 2. Button über den ersten!



  • du musst der South-Componente noch einmal einen separetes BorderLayout zuweisen...da kannst du dann mit WEST, CENTER und EAST arbeiten....je nach dem wie es sich verhalten soll wenn man die Fenstergroesse aendert halt



  • Du darfst die Buttons nicht direkt nach South einfügen sondern diese beiden Buttons in ein weiteres Panel einbetten und dieses Panel dann in South einfügen.



  • CengizS schrieb:

    Du darfst die Buttons nicht direkt nach South einfügen sondern diese beiden Buttons in ein weiteres Panel einbetten und dieses Panel dann in South einfügen.

    Hmm, ich hab das mal probiert, aber das will immer noch nicht so wie ich will.
    Steh da total auf em Schlauch. Was muss ich denn anders machen??

    JPanel neuesPanel = new JPanel();
    
    		final JDialog dialogFenster = new JDialog();                   
    
    		dialogFenster.setLayout(new BorderLayout(5,5));	
    		dialogFenster.setSize( 200, 500 );
    		dialogFenster.setVisible(false);
    
                    neuesPanel.add(endeImDialog);  //Button in das Panel
    
                    neuesPanel.add(speichern);    //Button in das Panel
    
    		dialogFenster.add(neuesPanel,BorderLayout.SOUTH);  //Panel in das JDialog
    
    		dialogFenster.add(anzeigeText,BorderLayout.CENTER);
    


  • Hallo,

    ich zeig's dir am Beispiel eines JFrames:

    import java.awt.*;
    import javax.swing.*;
    
    public class App extends JFrame {
    
      public App() {
        setLayout(new BorderLayout());
        add(pCenter = new JPanel(new BorderLayout()), "Center"); //Zentrales Panel, in der Mitte
    
        pCenter.add(bt1 = new JButton("Ich bin zentriert in der Mitte"), "Center");
    
        add(pSouth = new JPanel(new GridLayout(1,2)), "South");  //Unteres Panel, mit einem GridLayout, welches 2 Komponenten aufnimmt
        pSouth.add(bt2 = new JButton("Unten links"));
        pSouth.add(bt3 = new JButton("Unten rechts"));
      }
    
      public static void main(String []args) {
        new App().setVisible(true);
      }
    
      protected JButton bt1, bt2, bt3;
      protected JPanel pCenter, pSouth;
    };
    

    Anstatt GridLayout kann man auch FlowLayout nehmen. Oder noch ein BorderLayout, wobei man dann den bt2 nach "West" und den bt3 nach "East" ausrichten muss.

    MfG

    GPC



  • Ah, ok, habs jetzt auf die Reihe bekommen!
    Danke!


Anmelden zum Antworten