Java Swing面板布局之d性布局SpringLayout

Java Swing面板布局之d性布局SpringLayout,第1张

Java Swing面板布局之d性布局SpringLayout

一、简介

SpringLayout,d性布局管理器。使用该布局的容器内的每一个组件或容器都对应着一个约束,通过该约束定义组件或容器四条边的坐标位置来实现对组件的布局。

SpringLayout布局器是通过定义组件边缘之间的距离来对组件在容器之中组件的布局进行管理而工作的。这样,当一个组件的位置确定后,另一个组件某个边缘的位置可以通过相对于该组件边缘距离来确定,用这种布局管理器的好处是可以在容器大小改变时,各个组件之间的距离不会改变。因为组件有几个不同方向上的边缘,因此对于一个组件来说,要具体确定自己的位置,还要知道自己的哪方向上的边是参照于另一个组件的哪一方向上的边,这样才能准确确定自己的位置。

二、常用方法

// 创建 d性布局管理器 和 容器,容器 使用 d性布局

SpringLayout layout = new SpringLayout();

JPanel panel = new JPanel(layout);

public void putConstraint(String e1, Component c1, int pad, String e2, Component c2)

layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.WEST, JPane);//标签的左边距离容器的左边5个像素

layout.putConstraint(SpringLayout.NORTH, label, 10, SpringLayout.NORTH, JPane);//标签的北边距离容器的北边10个像素

三、Spring

Spring 可以看做是在 SpringLayout 中对 距离的度量。一个 Spring 实例,表示一段距离或长度,并且支持简单的算术运算(通过 Spring 提供的静态方法进行计算),常用方法如下:

// 创建一个指定长度的 spring

static Spring constant(int pref)

// 两个 spring 相加,得到新的一个 spring

static Spring sum(Spring s1, Spring s2)

// 计算两个 spring 之间的较大者

static Spring max(Spring s1, Spring s2)

// 对 spring 的缩放

static Spring scale(Spring s, float factor)

// 计算指定组件的宽度所表示的 spring

static Spring width(Component c)

// 计算指定组件的高度所表示的 spring

static Spring height(Component c)

// 对 spring 所表示的数值大小的获取和设置

int   getValue()

void  setValue(int value)

四、举例

import java.awt.*;

import javax.swing.*;

public class TestSpringLayOutM1 extends Jframe{

    public static void main(String args[]){

       new TestSpringLayOutM1();

    }

    private static final long serialVersionUID = 1L;

    public TestSpringLayOutM1(){

       this.setTitle("SpringLayOut测试");

       this.setLocationRelativeTo(null);

       this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);

       this.setSize(600, 400);

       addComponents();

       this.setVisible(true);

    }

    private void addComponents(){

       Container container = getContentPane();

       SpringLayout springLayout = new SpringLayout();

       container.setLayout(springLayout);

       JButton btn_cal = new JButton("计算");

       JLabel lb_ma = new JLabel("加速度:");

       JTextField txt_ma = new JTextField(5);

       JRadioButton rdb_heli = new JRadioButton("合理");

       JRadioButton rdb_buheli = new JRadioButton("不合理");

       JRadioButton rdb_all = new JRadioButton("全部");

       rdb_all.setSelected(true);

       JButton btn_see = new JButton("查看结果");      

       Jtextarea textarea = new Jtextarea(3, 30);

       textarea.setLineWrap(true);    

       JScrollPane scrollPane = new JScrollPane(textarea);

       JButton btn_export = new JButton("导出到数据库");

       Spring st10 = Spring.constant(10);

       Spring st20 = Spring.constant(20);

       container.add(btn_cal);

       springLayout.putConstraint(SpringLayout.NORTH, btn_cal, st10, SpringLayout.NORTH, container);

        springLayout.putConstraint(SpringLayout.WEST, btn_cal, st10, SpringLayout.WEST, container);

       container.add(lb_ma);

       springLayout.putConstraint(SpringLayout.NORTH, lb_ma, st10, SpringLayout.NORTH, container);

       springLayout.putConstraint(SpringLayout.WEST, lb_ma, st20, SpringLayout.EAST, btn_cal);

       container.add(txt_ma);

       springLayout.putConstraint(SpringLayout.NORTH, txt_ma, st10, SpringLayout.NORTH, container);

       springLayout.putConstraint(SpringLayout.WEST, txt_ma, st10, SpringLayout.EAST, lb_ma);

      

       container.add(btn_see);

       springLayout.putConstraint(SpringLayout.NORTH, btn_see, st10, SpringLayout.NORTH, container);

       springLayout.putConstraint(SpringLayout.EAST, btn_see, Spring.constant(-10), SpringLayout.EAST, container);

      

       container.add(rdb_all);

       springLayout.putConstraint(SpringLayout.NORTH, rdb_all, st10, SpringLayout.NORTH, container);

       springLayout.putConstraint(SpringLayout.EAST, rdb_all, Spring.minus(st10), SpringLayout.WEST, btn_see);

      

       container.add(rdb_heli);

       springLayout.putConstraint(SpringLayout.NORTH, rdb_heli, st10, SpringLayout.NORTH, container);

       springLayout.putConstraint(SpringLayout.EAST, rdb_heli, Spring.constant(-10), SpringLayout.WEST, rdb_all);

      

       container.add(rdb_buheli);

       springLayout.putConstraint(SpringLayout.NORTH, rdb_buheli, st10, SpringLayout.NORTH, container);

       springLayout.putConstraint(SpringLayout.EAST, rdb_buheli, Spring.constant(-10), SpringLayout.WEST, rdb_heli);

       ButtonGroup group = new ButtonGroup();group.add(rdb_heli);group.add(rdb_buheli);group.add(rdb_all);

      

       container.add(btn_export);

       springLayout.putConstraint(SpringLayout.SOUTH, btn_export, Spring.constant(-10), SpringLayout.SOUTH, container);

       springLayout.putConstraint(SpringLayout.EAST, btn_export, Spring.minus(st10), SpringLayout.EAST, container);

      

       container.add(scrollPane);

       springLayout.putConstraint(SpringLayout.NORTH, scrollPane, st10, SpringLayout.SOUTH, btn_cal);

       springLayout.putConstraint(SpringLayout.WEST, scrollPane, st10, SpringLayout.WEST, container);

       springLayout.putConstraint(SpringLayout.EAST, scrollPane, Spring.minus(st10), SpringLayout.EAST, container);

       springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, Spring.minus(st10), SpringLayout.NORTH, btn_export);

    }

}

 

 

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

原文地址: http://outofmemory.cn/zaji/5709265.html

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

发表评论

登录后才能评论

评论列表(0条)

保存