JAVA中,BorderLayout布局管理器是如何安排组件的?

JAVA中,BorderLayout布局管理器是如何安排组件的?,第1张

BorderLayout将容器的矩形区域分为五个区,分别是上北下南左西右东还有中央。

这五个区域每个区域最多只能放置一个组件,如果添加了多个,只有最后一个能够正确显示。

这五个区域可以选择性地使用其中几个,或者全部都使用。不使用的区域将合并为一个,下一个组件添加进来,将占据这个合并区域。

这五个区域先划分北南,再划分东西。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

┃北┃

┣━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━┫

┃ ┃   ┃ ┃

┃ ┃   ┃ ┃

┃ ┃ ┃ ┃

┃ ┃   ┃ ┃

┃ ┃   ┃ ┃

┃ 西 ┃中  ┃ 东 ┃

┃ ┃   ┃ ┃

┃ ┃   ┃ ┃

┃ ┃   ┃ ┃

┃ ┃   ┃ ┃

┃ ┃   ┃ ┃

┣━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━┫

┃南  ┃

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Java的界面布局,效果最好的就是无布局或者多种布局结合。你的程序中p2这个JPanel使用的默认布局。要改为竖向排列有以下方式:1)GridLayout网格布局,顶一个一个3行1列的网格就是了。2)BoxLayout这个就像一个盒子,你只要规定盒子是按照X轴方向排列还是Y轴方向排列。3)GridBagLayout无序布局,这个比较难用,但用好了效果最好。具体的使用方式你在百度知道里搜索下GridBagLayout无序布局就能找到,我写过一个比较详细的案例。最后你这种左右分割的布局,建议使用JSplitPane来控制。这个是一个左右或者上下分割的面板容器。

JFrame默认布局就是BorderLayout ,所以无需指定布局了 ,我们只需要指定添加的组件的位置就可以了

效果图

参考代码如下

import java.awt.BorderLayout

import 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)//实例化并可见

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11640516.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存