Mega Code Archive

 
Categories / Java / Swing JFC
 

Spring Demo 4

/* From http://java.sun.com/docs/books/tutorial/index.html */ /*  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions are met:  *  * -Redistribution of source code must retain the above copyright notice, this  *  list of conditions and the following disclaimer.  *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation  *  and/or other materials provided with the distribution.  *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission.  *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")  * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE  * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  *  * You acknowledge that this software is not designed, licensed or intended  * for use in the design, construction, operation or maintenance of any  * nuclear facility.  */ import java.awt.Component; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.Spring; import javax.swing.SpringLayout; public class SpringDemo4 {   /**    * Create the GUI and show it. For thread safety, this method should be    * invoked from the event-dispatching thread.    */   private static void createAndShowGUI() {     //Make sure we have nice window decorations.     JFrame.setDefaultLookAndFeelDecorated(true);     //Create and set up the window.     JFrame frame = new JFrame("SpringDemo4");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     //Set up the content pane.     Container contentPane = frame.getContentPane();     SpringLayout layout = new SpringLayout();     contentPane.setLayout(layout);     //Create and add the components.     JLabel label = new JLabel("Label: ");     JTextField textField = new JTextField("Text field", 15);     contentPane.add(label);     contentPane.add(textField);     //Adjust constraints for the label so it's at (5,5).     SpringLayout.Constraints labelCons = layout.getConstraints(label);     labelCons.setX(Spring.constant(5));     labelCons.setY(Spring.constant(5));     //Adjust constraints for the text field so it's at     //(<label's right edge> + 5, 5).     SpringLayout.Constraints textFieldCons = layout         .getConstraints(textField);     textFieldCons.setX(Spring.sum(Spring.constant(5), labelCons         .getConstraint(SpringLayout.EAST)));     textFieldCons.setY(Spring.constant(5));     //Adjust constraints for the content pane.     setContainerSize(contentPane, 5);     //Display the window.     frame.pack();     frame.setVisible(true);   }   public static void main(String[] args) {     //Schedule a job for the event-dispatching thread:     //creating and showing this application's GUI.     javax.swing.SwingUtilities.invokeLater(new Runnable() {       public void run() {         createAndShowGUI();       }     });   }   public static void setContainerSize(Container parent, int pad) {     SpringLayout layout = (SpringLayout) parent.getLayout();     Component[] components = parent.getComponents();     Spring maxHeightSpring = Spring.constant(0);     SpringLayout.Constraints pCons = layout.getConstraints(parent);     //Set the container's right edge to the right edge     //of its rightmost component + padding.     Component rightmost = components[components.length - 1];     SpringLayout.Constraints rCons = layout.getConstraints(rightmost);     pCons.setConstraint(SpringLayout.EAST, Spring.sum(Spring.constant(pad),         rCons.getConstraint(SpringLayout.EAST)));     //Set the container's bottom edge to the bottom edge     //of its tallest component + padding.     for (int i = 0; i < components.length; i++) {       SpringLayout.Constraints cons = layout           .getConstraints(components[i]);       maxHeightSpring = Spring.max(maxHeightSpring, cons           .getConstraint(SpringLayout.SOUTH));     }     pCons.setConstraint(SpringLayout.SOUTH, Spring.sum(         Spring.constant(pad), maxHeightSpring));   } }