2012-05-15 40 views
1

我想安排如图所示的组件。我可以通过使用gridbaglayout来做到这一点,但我想用borderlayout来做到这一点。我尝试过,但无法达到我想要的。所以请在这里指导我。 这里的黑色矩形像的JPanel,按钮等swt或swing中的borderlayout

enter image description here

回答

4

如果你只想用BorderLayout来做,你需要使用2个BorderLayout。如果你不能使用2个布局,那么你会被困在GridBagLayout中。 这就是我讲的一个示范:

import java.awt.BorderLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class Test { 

    protected void initUI() { 
     JFrame frame = new JFrame("test"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(new BorderLayout()); 
     JPanel panel2 = new JPanel(new BorderLayout()); 
     panel2.add(new JButton("NORTH"), BorderLayout.NORTH); 
     panel2.add(new JButton("CENTER")); 
     panel.add(panel2); 
     panel.add(new JButton("SOUTH"), BorderLayout.SOUTH); 
     panel.add(new JButton("EAST"), BorderLayout.EAST); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new Test().initUI(); 
      } 
     }); 
    } 
} 

Example

+0

简单而优秀+1 – mKorbel

+0

@Guillaume Polet:感谢这个不错的例子。 –

3

边境布局的构成不工作的方式。这是边境布置示意图:

enter image description here

您将无法在东区域的布局放入顶部右上角 - 北总会浮起的右手边。

编辑:显示自从我使用Swing或AWT以来已经过了多长时间 - 当我做时,它是东,北,西,南和中心。

+0

东,北,西,南,中心仍然有效 –

+2

@a_horse_with_no_name:它们是有效的,尽管[Java文档(HTTP ://docs.oracle.com/javase/tutorial/uiswing/layout/border.html)现在不鼓励它们在Java 1.4以后的使用,声明“在JDK版本1.4之前,各个领域的首选名称是不同的,从点(例如,顶部区域的BorderLayout.NORTH)转换为我们例子中使用的常量的字典版本。我们的例子使用的常量是首选的,因为它们是标准的并且使程序能够适应具有不同方向的语言。“ –