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); } //------------------------------------------- }