BorderLayout



  • hallo,

    ein Container hat den Layout BorderLayout

    ich versuch 3 Panels North , Center South zu plazieren aber geht es nicht

    die Panels wrde in die falsche groesse angezeigt !!!!!!!!

    warum wo tue ich die Fehler ????

    public class MyScreen extends JFrame
    {
     public MyScreen() {
       super();
       Dimension dim = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
       screenWidth  = new Double(dim.getWidth()).intValue();
       screenHeight = new Double(dim.getHeight()).intValue();
       this.setSize(screenWidth,screenHeight);
       contentPane = this.getContentPane();
       contentPane.setLayout(new BorderLayout());
    
            JPanel top_Panel1 = new JPanel();
            top_Panel1.setLayout(null);
            top_Panel1.setSize(screenWidth, AppConstants.topPanelHeight); 
            top_Panel1.setBackground(Color.RED);
             contentPane.add(top_Panel1, BorderLayout.NORTH);
    
            JPanel center_Panel1 = new JPanel();
            center_Panel1.setBackground(Color.GREEN);
            center_Panel1.setSize(screenWidth,AppConstants.centerPanelHeight);
            contentPane.add(center_Panel1, BorderLayout.CENTER);
    
            bottom_Panel1 = new JPanel();
            bottom_Panel1.setSize(screenWidth,50);
            bottom_Panel1.setBackground(Color.YELLOW);
            contentPane.add(bottom_Panel1, BorderLayout.SOUTH); 
    }
    //----------------------------------------------------------------
    
    public static void main(String V[])
    {
       new MyScreen().setVisible(true); 
    }
    //-------------------------------------------
    }
    


  • Ich kann nicht nachvollziehen, welche Werte in

    AppConstants.topPanelHeight
    AppConstants.centerPanelHeight
    

    stecken; hatte damit noch nie was zu tun.

    Mir ist nur aufgefallen, dass du für den top_Panel1 ein Null-Layout definiert hast, während die anderen beiden Panels über ein Flow-Layout verfügen.

    Welche Ausgabe erwartest du denn hinsichtlich der Größe der Panels?



  • Du willst also, dass alle Panels die gleiche Größe haben, richtig? Dafür würde ich das BorderLayout aber nicht verwenden. So weit ich weis, ist das CENTER-Element immer am größten (Es sei denn die Fenstergröße ist sehr klein).
    Probiers doch mal mit einem GridLayout:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class MyScreen extends JFrame
    {
     public MyScreen() {
       super("Test");
    
       this.setSize(400,300);
       this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    
       getContentPane().setLayout(new GridLayout(3,1));
    
            JPanel top_Panel1 = new JPanel();
            top_Panel1.setBackground(Color.RED);
            getContentPane().add(top_Panel1);
    
            JPanel center_Panel1 = new JPanel();
            center_Panel1.setBackground(Color.GREEN);
            getContentPane().add(center_Panel1);
    
            JPanel bottom_Panel1 = new JPanel();
            bottom_Panel1.setBackground(Color.YELLOW);
            getContentPane().add(bottom_Panel1);
    }
    
    public void processWindowEvent(WindowEvent Ereignis)
    {
     if (Ereignis.getID() == Ereignis.WINDOW_CLOSING)
     {
      dispose();
      System.exit(0);
     }
    }
    
    //----------------------------------------------------------------
    
    public static void main(String V[])
    {
       new MyScreen().setVisible(true);
    }
    //-------------------------------------------
    }
    

Anmelden zum Antworten