zoukankan      html  css  js  c++  java
  • JFrame的BorderLayout

    JFrame的默认布局就是BorderLayout,即将一个窗体划分为东西南北中五个板块。

    如果往其中添加组件,中间面板大小随窗体大小变化,其余部分根据添加的组件的大小自适应。

    容器变高,则North,South区域不变,West,East,Center区域变高

    容器变宽,则West,East区域不变,North,South,Center区域变宽

    注意,这种布局下,每个区域最多只能包含一个组件。

    五个区域默认是看不到边界线的,即距离为0.

    如何设置间距?

    BorderLayout(): 构造一个组件之间没有间距(默认间距为0像素)的新边框布局

    BorderLayout(int hgap, int vgap) :  构造一个具有指定组件(hgap为横向间距,vgap为纵向间距)间距的边框布局

    int getHgap() : 返回组件之间的水平间距。

    int getVgap() :返回组件之间的垂直间距。

    void removeLayoutComponent(Component comp): 从此边框布局中移除指定组件。

    void setHgap(int hgap):设置组件之间的水平间距。

    void setVgap(int vgap) :设置组件之间的垂直间距。

     

    那么如何控制这几个板块的高度与宽度?

    我们发现setSize,setLocation,setBounds,或者setMaximumSize()和setMinimumSize()都达不到效果

    需要使用setPreferredSize。

    1.setPreferredSize需要在使用布局管理器的时候使用,布局管理器会获取空间的preferredsize,因而可以生效。例如borderlayout在north中放入一个panel,panel的高度可以通过这样实现:panel.setPreferredSize(new Dimension(0, 100));JFrame.getContentPane().add(panel,BorderLayout.SOUTH);这样就设置了一个高度为100的panel,宽度随窗口变化。

    2.setSize,setLocation,setBounds方法需要在不使用布局管理器的时候使用,也就是setLayout(null)的时候可以使用这三个方法控制布局。

    设置按钮大小用setSize无效?

    button.setPreferredSize(new Dimension(80,50));

    这样就可以了。

    设置间隔?

    设置组件的位置,左对齐,居中,右对齐?

    重新设置为FlowLayout布局

  • 相关阅读:
    ssh 无密码互通
    React之jsx转js
    分布式事务参考
    js跨域解决方案
    idea编译时JDK版本变化
    计数算法
    Rocketmq消息持久化
    rocketmq安装
    nginx高可用配置
    nginx负载均衡设置
  • 原文地址:https://www.cnblogs.com/hebiao/p/11130839.html
Copyright © 2011-2022 走看看