springwindow3.java

来自「这是一个英文版的《Java程序设计与问题解决》现在好多大学都当成教材」· Java 代码 · 共 73 行

JAVA
73
字号
/* * FlowLayout converted to be SpringLayout. */import java.awt.*;import java.awt.event.*;import javax.swing.*;public class SpringWindow3 extends JFrame {         public SpringWindow3() {        Container contentPane = getContentPane();        contentPane.setLayout(new SpringLayout());           contentPane.add(new JButton("Button 1"));        contentPane.add(new JButton("2"));        contentPane.add(new JButton("Button 3"));        contentPane.add(new JButton("Long-Named Button 4"));        contentPane.add(new JButton("Button 5"));        doLayout(contentPane);        setDefaultCloseOperation(EXIT_ON_CLOSE);    }    public void doLayout(Container parent) {        //assert parent.getLayout() instanceof SpringLayout        Component[] components = parent.getComponents();        SpringLayout layout = (SpringLayout)parent.getLayout();        Spring xPad = Spring.constant(5);        Spring ySpring = Spring.constant(5);        Spring xSpring = xPad;        Spring maxHeightSpring = Spring.constant(0);        // Make every component 5 pixels away from the component to its left.        for (int i = 0; i < components.length; i++) {            SpringLayout.Constraints cons = layout.getConstraints(components[i]);            cons.setX(xSpring);            xSpring = Spring.sum(xPad, cons.getConstraint("East")); //use proxy instead?            cons.setY(ySpring);            maxHeightSpring = Spring.max(maxHeightSpring,                                         cons.getConstraint("South"));        }        // Make the window's preferred size depend on its components.        SpringLayout.Constraints pCons = layout.getConstraints(parent);        // This doesn't work.  Why not?        //pCons.setWidth(xSpring);        //pCons.setHeight(Spring.sum(maxHeightSpring, ySpring));        // Neither does this (just checking).        // pCons.setConstraint("Width", xSpring);        // pCons.setConstraint("Height", Spring.sum(maxHeightSpring, ySpring));        // This works.  Why?        pCons.setConstraint("East", xSpring);        pCons.setConstraint("South", Spring.sum(maxHeightSpring, ySpring));    }    public static void main(String args[]) {        SpringWindow3 window = new SpringWindow3();        window.setTitle("SpringLayout");        window.pack();        window.setVisible(true);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?