
BorderLayout将容器的矩形区域分为五个区,分别是上北下南左西右东还有中央。
这五个区域每个区域最多只能放置一个组件,如果添加了多个,只有最后一个能够正确显示。
这五个区域可以选择性地使用其中几个,或者全部都使用。不使用的区域将合并为一个,下一个组件添加进来,将占据这个合并区域。
这五个区域先划分北南,再划分东西。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃北┃
┣━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━┫
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ 西 ┃中 ┃ 东 ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┣━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━┫
┃南 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Java的界面布局,效果最好的就是无布局或者多种布局结合。你的程序中p2这个JPanel使用的默认布局。要改为竖向排列有以下方式:1)GridLayout网格布局,顶一个一个3行1列的网格就是了。2)BoxLayout这个就像一个盒子,你只要规定盒子是按照X轴方向排列还是Y轴方向排列。3)GridBagLayout无序布局,这个比较难用,但用好了效果最好。具体的使用方式你在百度知道里搜索下GridBagLayout无序布局就能找到,我写过一个比较详细的案例。最后你这种左右分割的布局,建议使用JSplitPane来控制。这个是一个左右或者上下分割的面板容器。JFrame默认布局就是BorderLayout ,所以无需指定布局了 ,我们只需要指定添加的组件的位置就可以了
效果图
参考代码如下
import java.awt.BorderLayoutimport java.awt.Color
import javax.swing.*
public class BLDemo extends JFrame {
JPanel jp1, jp2, jp3, jp4, jp5
public BLDemo() {
jp1 = new JPanel()
jp1.add(new JLabel("东"))
add(jp1, BorderLayout.EAST)// 放到窗口的东面
jp2 = new JPanel()
jp2.add(new JLabel("南"))
add(jp2, BorderLayout.SOUTH)
jp3 = new JPanel()
jp3.add(new JLabel("西"))
add(jp3, BorderLayout.WEST)
jp4 = new JPanel()
jp4.add(new JLabel("北"))
add(jp4, BorderLayout.NORTH)
jp5 = new JPanel()
jp5.setBackground(Color.LIGHT_GRAY)
jp5.add(new JLabel("中"))
add(jp5, BorderLayout.CENTER)// BorderLayout.CENTER放到中间,这个可以省略
// 窗口属性的设置
setTitle("窗口")// 窗口标题
setSize(300, 300)// 窗口宽 高
setLocationRelativeTo(null)// 窗口居中(屏幕中央)
setDefaultCloseOperation(EXIT_ON_CLOSE)// 点击窗口右上角的按钮时结束程序
}
public static void main(String[] args) {
new BLDemo().setVisible(true)//实例化并可见
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)