1 package com.nightlabs.util; 2 3 import javax.swing.*; 4 import javax.swing.SpringLayout ; 5 import java.awt.*; 6 7 13 public class SpringUtilities { 14 18 public static void printSizes(Component c) { 19 System.out.println("minimumSize = " + c.getMinimumSize()); 20 System.out.println("preferredSize = " + c.getPreferredSize()); 21 System.out.println("maximumSize = " + c.getMaximumSize()); 22 } 23 24 38 public static void makeGrid(Container parent, 39 int rows, int cols, 40 int initialX, int initialY, 41 int xPad, int yPad) { 42 SpringLayout layout; 43 try { 44 layout = (SpringLayout )parent.getLayout(); 45 } catch (ClassCastException exc) { 46 System.err.println("The first argument to makeGrid must use SpringLayout."); 47 return; 48 } 49 50 Spring xPadSpring = Spring.constant(xPad); 51 Spring yPadSpring = Spring.constant(yPad); 52 Spring initialXSpring = Spring.constant(initialX); 53 Spring initialYSpring = Spring.constant(initialY); 54 int max = rows * cols; 55 56 Spring maxWidthSpring = layout.getConstraints(parent.getComponent(0)). 59 getWidth(); 60 Spring maxHeightSpring = layout.getConstraints(parent.getComponent(0)). 61 getWidth(); 62 for (int i = 1; i < max; i++) { 63 SpringLayout.Constraints cons = layout.getConstraints( 64 parent.getComponent(i)); 65 66 maxWidthSpring = Spring.max(maxWidthSpring, cons.getWidth()); 67 maxHeightSpring = Spring.max(maxHeightSpring, cons.getHeight()); 68 } 69 70 for (int i = 0; i < max; i++) { 73 SpringLayout.Constraints cons = layout.getConstraints( 74 parent.getComponent(i)); 75 76 cons.setWidth(maxWidthSpring); 77 cons.setHeight(maxHeightSpring); 78 } 79 80 SpringLayout.Constraints lastCons = null; 83 SpringLayout.Constraints lastRowCons = null; 84 for (int i = 0; i < max; i++) { 85 SpringLayout.Constraints cons = layout.getConstraints( 86 parent.getComponent(i)); 87 if (i % cols == 0) { lastRowCons = lastCons; 89 cons.setX(initialXSpring); 90 } else { cons.setX(Spring.sum(lastCons.getConstraint(SpringLayout.EAST), 92 xPadSpring)); 93 } 94 95 if (i / cols == 0) { cons.setY(initialYSpring); 97 } else { cons.setY(Spring.sum(lastRowCons.getConstraint(SpringLayout.SOUTH), 99 yPadSpring)); 100 } 101 lastCons = cons; 102 } 103 104 SpringLayout.Constraints pCons = layout.getConstraints(parent); 106 pCons.setConstraint(SpringLayout.SOUTH, 107 Spring.sum( 108 Spring.constant(yPad), 109 lastCons.getConstraint(SpringLayout.SOUTH))); 110 pCons.setConstraint(SpringLayout.EAST, 111 Spring.sum( 112 Spring.constant(xPad), 113 lastCons.getConstraint(SpringLayout.EAST))); 114 } 115 116 117 private static SpringLayout.Constraints getConstraintsForCell( 118 int row, int col, 119 Container parent, 120 int cols) { 121 SpringLayout layout = (SpringLayout ) parent.getLayout(); 122 Component c = parent.getComponent(row * cols + col); 123 return layout.getConstraints(c); 124 } 125 126 141 public static void makeCompactGrid(Container parent, 142 int rows, int cols, 143 int initialX, int initialY, 144 int xPad, int yPad) { 145 SpringLayout layout; 146 try { 147 layout = (SpringLayout )parent.getLayout(); 148 } catch (ClassCastException exc) { 149 System.err.println("The first argument to makeCompactGrid must use SpringLayout."); 150 return; 151 } 152 153 Spring x = Spring.constant(initialX); 155 for (int c = 0; c < cols; c++) { 156 Spring width = Spring.constant(0); 157 for (int r = 0; r < rows; r++) { 158 width = Spring.max(width, 159 getConstraintsForCell(r, c, parent, cols). 160 getWidth()); 161 } 162 for (int r = 0; r < rows; r++) { 163 SpringLayout.Constraints constraints = 164 getConstraintsForCell(r, c, parent, cols); 165 constraints.setX(x); 166 constraints.setWidth(width); 167 } 168 x = Spring.sum(x, Spring.sum(width, Spring.constant(xPad))); 169 } 170 171 Spring y = Spring.constant(initialY); 173 for (int r = 0; r < rows; r++) { 174 Spring height = Spring.constant(0); 175 for (int c = 0; c < cols; c++) { 176 height = Spring.max(height, 177 getConstraintsForCell(r, c, parent, cols). 178 getHeight()); 179 } 180 for (int c = 0; c < cols; c++) { 181 SpringLayout.Constraints constraints = 182 getConstraintsForCell(r, c, parent, cols); 183 constraints.setY(y); 184 constraints.setHeight(height); 185 } 186 y = Spring.sum(y, Spring.sum(height, Spring.constant(yPad))); 187 } 188 189 SpringLayout.Constraints pCons = layout.getConstraints(parent); 191 pCons.setConstraint(SpringLayout.SOUTH, y); 192 pCons.setConstraint(SpringLayout.EAST, x); 193 } 194 }
| Popular Tags
|