java springlayout,Java Swing SpringLayout

Java Swing教程 - Java Swing SpringLayout

javax.swing包中的SpringLayout类的实例表示一个SpringLayout管理器。

在SpringLayout管理器的上下文中的弹簧可以被拉伸,压缩或保持在其正常状态。

Spring对象有四个属性:最小值,首选值,最大值和当前值。

当被最大程度压缩时,弹簧具有其最小值。在其正常状态下,它具有其优选值。

在其最拉伸状态下,它具有其最大值。其在任何给定时间点的值是其当前值。

当弹簧的最小值,优选值和最大值相同时,它被称为支柱。

我们可以使用工厂方法创建一个spring。

要从头开始创建spring或strut,我们可以使用它的重载的constant()静态方法。

我们还可以使用组件的宽度或高度创建弹簧。

创建10像素的支柱Spring strutPadding = Spring.constant(10);

创建一个有10,25和50的弹簧分别作为其最小值,优选值和最大值。Spring springPadding = Spring.constant(10, 25, 50);

从名为c1的组件的宽度创建弹簧Spring s1 = Spring.width(c1);

从名为c1的组件的宽度创建弹簧...Spring s2 = Spring.height(c1);

Spring类有一些实用程序方法,让我们操纵spring属性。

Spring类有一些实用程序方法,让我们操纵spring属性。...Spring s3 = Spring.sum(s1, s2);

我们可以通过minus()方法从另一个减去一个弹簧来创建一个弹簧。

我们可以通过minus()方法从另一个减去一个弹簧来创建一个弹簧。...

使用scale()方法创建另一个弹簧的一部分。String fractionSpring = Spring.scale(s1, 0.40f);import java.awt.Container;

/*www.java2s.com*/

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.SpringLayout;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("SpringLayout");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane = frame.getContentPane();

// Set the content pane"s layout as SpringLayout SpringLayout springLayout = new SpringLayout();

contentPane.setLayout(springLayout);

// Add two JButtons to the content pane JButton b1 = new JButton("Button 1");

JButton b2 = new JButton("Little Bigger Button 2");

contentPane.add(b1);

contentPane.add(b2);

frame.pack();

frame.setVisible(true);

}

}

约束

下表列出了SpringLayout类中定义的常量。常量名称描述

NORTH它是y的同义词。 它是组件的顶部边缘。

WEST它是x的同义词。 它是组件的左边缘。

SOUTH它是组件的底部边缘。 其值与NORTH + HEIGHT相同。

EAST它是组件的右边缘。 它与WEST + WIDTH相同。

WIDTH组件的宽度。

HEIGHT组件的高度。

HORIZONTAL_CENTER它是组件的水平中心。 它与WEST + WIDTH / 2相同。

VERTICAL_CENTER它是组件的垂直中心。 它与NORTH + HEIGHT / 2相同。

BASELINE它是组件的基线。

以下代码显示了如何设置组件相对于容器或另一个组件的x和y约束。import java.awt.Container;

//www.java2s.com

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.Spring;

import javax.swing.SpringLayout;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("SpringLayout");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane = frame.getContentPane();

// Set the content pane"s layout to a SpringLayout SpringLayout springLayout = new SpringLayout();

contentPane.setLayout(springLayout);

// Add two JButtons to the content pane JButton b1 = new JButton("Button 1");

JButton b2 = new JButton("Button Second");

// Create Constraints objects for b1 and b2 SpringLayout.Constraints b1c = new SpringLayout.Constraints();

SpringLayout.Constraints b2c = new SpringLayout.Constraints();

// Create a Spring object for y value for b1 and b2 Spring yPadding = Spring.constant(20);

// Set (10, 20) for (x, y) for b1 b1c.setX(Spring.constant(10));

b1c.setY(yPadding);

// Set (150, 20) for (x, y) for b2 b2c.setX(Spring.constant(150));

b2c.setY(yPadding);

// Use the Constraints object while adding b1 and b2 contentPane.add(b1, b1c);

contentPane.add(b2, b2c);

frame.pack();

frame.setVisible(true);

}

}

要在SpringLayout中设置组件的约束,我们也可以使用SpringLayout类的putConstraint()方法。

这里有两个版本的putConstraint()方法:void putConstraint(String targetEdge, Component targetComponent, int padding, String sourceEdge,Component sourceComponent)

void putConstraint(String targetEdge, Component targetComponent, Spring padding, String sourceEdge, Component sourceComponent)

第一个版本使用支柱。 int padding定义了一个固定弹簧,它将作为两个组件边缘之间的支柱(固定距离)。

第二个版本使用弹簧。

b2的左边缘的位置为5像素从b1的右边缘,使用以下方法。springLayout.putConstraint(SpringLayout.WEST, b2, 5, SpringLayout.EAST, b1);

要从内容窗格的左边缘设置b1的10个像素的左边缘。springLayout.putConstraint(SpringLayout.WEST, b1, 5, SpringLayout.WEST, contentPane);

例子

下面的代码展示了如何使用SpringLayout类的putConstraint()方法。import java.awt.Container;

/*www.java2s.com*/

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.SpringLayout;

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("SpringLayout2");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane = frame.getContentPane();

SpringLayout springLayout = new SpringLayout();

contentPane.setLayout(springLayout);

JButton b1 = new JButton("Button 1");

JButton b2 = new JButton("Button Second");

contentPane.add(b1);

contentPane.add(b2);

springLayout.putConstraint(SpringLayout.WEST, b1, 10, SpringLayout.WEST, contentPane);

springLayout.putConstraint(SpringLayout.NORTH, b1, 20, SpringLayout.NORTH, contentPane);

springLayout.putConstraint(SpringLayout.WEST, b2, 10, SpringLayout.EAST, b1);

springLayout.putConstraint(SpringLayout.NORTH, b2, 20,SpringLayout.NORTH, contentPane);

springLayout.putConstraint(SpringLayout.SOUTH, contentPane, 10,SpringLayout.SOUTH, b1);

springLayout.putConstraint(SpringLayout.EAST, contentPane, 10, SpringLayout.EAST, b2);

frame.pack();

frame.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值