1
35
36
39
40
41 import javax.swing.*;
42 import javax.swing.event.*;
43 import javax.swing.text.*;
44 import javax.swing.table.*;
45 import javax.swing.border.*;
46 import javax.swing.colorchooser.*;
47 import javax.swing.filechooser.*;
48 import javax.accessibility.*;
49
50 import java.awt.*;
51 import java.awt.event.*;
52 import java.beans.*;
53 import java.util.*;
54 import java.io.*;
55 import java.applet.*;
56 import java.net.*;
57
58
65 public class TableDemo extends DemoModule {
66 JTable tableView;
67 JScrollPane scrollpane;
68 Dimension origin = new Dimension(0, 0);
69
70 JCheckBox isColumnReorderingAllowedCheckBox;
71 JCheckBox showHorizontalLinesCheckBox;
72 JCheckBox showVerticalLinesCheckBox;
73
74 JCheckBox isColumnSelectionAllowedCheckBox;
75 JCheckBox isRowSelectionAllowedCheckBox;
76
78 JLabel interCellSpacingLabel;
79 JLabel rowHeightLabel;
80
81 JSlider interCellSpacingSlider;
82 JSlider rowHeightSlider;
83
84 JComboBox selectionModeComboBox = null;
85 JComboBox resizeModeComboBox = null;
86
87 JPanel controlPanel;
88 JScrollPane tableAggregate;
89
90 String path = "ImageClub/food/";
91
92 final int INITIAL_ROWHEIGHT = 33;
93
94
97 public static void main(String[] args) {
98 TableDemo demo = new TableDemo(null);
99 demo.mainImpl();
100 }
101
102
105 public TableDemo(SwingSet2 swingset) {
106 super(swingset, "TableDemo", "toolbar/JTable.gif");
107
108 getDemoPanel().setLayout(new BorderLayout());
109 controlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
110 JPanel column1 = new JPanel (new ColumnLayout() );
111 JPanel column2 = new JPanel (new ColumnLayout() );
112 JPanel column3 = new JPanel (new ColumnLayout() );
113
114 getDemoPanel().add(controlPanel, BorderLayout.NORTH);
115 Vector relatedComponents = new Vector();
116
117 isColumnReorderingAllowedCheckBox = new JCheckBox(getString("TableDemo.reordering_allowed"), true);
119 column1.add(isColumnReorderingAllowedCheckBox);
120 isColumnReorderingAllowedCheckBox.addActionListener(new ActionListener() {
121 public void actionPerformed(ActionEvent e) {
122 boolean flag = ((JCheckBox)e.getSource()).isSelected();
123 tableView.getTableHeader().setReorderingAllowed(flag);
124 tableView.repaint();
125 }
126 });
127
128
129 showHorizontalLinesCheckBox = new JCheckBox(getString("TableDemo.horz_lines"), true);
130 column1.add(showHorizontalLinesCheckBox);
131 showHorizontalLinesCheckBox.addActionListener(new ActionListener() {
132 public void actionPerformed(ActionEvent e) {
133 boolean flag = ((JCheckBox)e.getSource()).isSelected();
134 tableView.setShowHorizontalLines(flag); ;
135 tableView.repaint();
136 }
137 });
138
139 showVerticalLinesCheckBox = new JCheckBox(getString("TableDemo.vert_lines"), true);
140 column1.add(showVerticalLinesCheckBox);
141 showVerticalLinesCheckBox.addActionListener(new ActionListener() {
142 public void actionPerformed(ActionEvent e) {
143 boolean flag = ((JCheckBox)e.getSource()).isSelected();
144 tableView.setShowVerticalLines(flag); ;
145 tableView.repaint();
146 }
147 });
148
149 relatedComponents.removeAllElements();
151 relatedComponents.add(showHorizontalLinesCheckBox);
152 relatedComponents.add(showVerticalLinesCheckBox);
153 buildAccessibleGroup(relatedComponents);
154
155 interCellSpacingLabel = new JLabel(getString("TableDemo.intercell_spacing_colon"));
156 column1.add(interCellSpacingLabel);
157
158 interCellSpacingSlider = new JSlider(JSlider.HORIZONTAL, 0, 10, 1);
159 interCellSpacingSlider.getAccessibleContext().setAccessibleName(getString("TableDemo.intercell_spacing"));
160 interCellSpacingLabel.setLabelFor(interCellSpacingSlider);
161 column1.add(interCellSpacingSlider);
162 interCellSpacingSlider.addChangeListener(new ChangeListener() {
163 public void stateChanged(ChangeEvent e) {
164 int spacing = ((JSlider)e.getSource()).getValue();
165 tableView.setIntercellSpacing(new Dimension(spacing, spacing));
166 tableView.repaint();
167 }
168 });
169
170 controlPanel.add(column1);
171
172
174 isColumnSelectionAllowedCheckBox = new JCheckBox(getString("TableDemo.column_selection"), false);
175 column2.add(isColumnSelectionAllowedCheckBox);
176 isColumnSelectionAllowedCheckBox.addActionListener(new ActionListener() {
177 public void actionPerformed(ActionEvent e) {
178 boolean flag = ((JCheckBox)e.getSource()).isSelected();
179 tableView.setColumnSelectionAllowed(flag); ;
180 tableView.repaint();
181 }
182 });
183
184 isRowSelectionAllowedCheckBox = new JCheckBox(getString("TableDemo.row_selection"), true);
185 column2.add(isRowSelectionAllowedCheckBox);
186 isRowSelectionAllowedCheckBox.addActionListener(new ActionListener() {
187 public void actionPerformed(ActionEvent e) {
188 boolean flag = ((JCheckBox)e.getSource()).isSelected();
189 tableView.setRowSelectionAllowed(flag); ;
190 tableView.repaint();
191 }
192 });
193
194 relatedComponents.removeAllElements();
196 relatedComponents.add(isColumnSelectionAllowedCheckBox);
197 relatedComponents.add(isRowSelectionAllowedCheckBox);
198 buildAccessibleGroup(relatedComponents);
199
200
211
212 rowHeightLabel = new JLabel(getString("TableDemo.row_height_colon"));
213 column2.add(rowHeightLabel);
214
215 rowHeightSlider = new JSlider(JSlider.HORIZONTAL, 5, 100, INITIAL_ROWHEIGHT);
216 rowHeightSlider.getAccessibleContext().setAccessibleName(getString("TableDemo.row_height"));
217 rowHeightLabel.setLabelFor(rowHeightSlider);
218 column2.add(rowHeightSlider);
219 rowHeightSlider.addChangeListener(new ChangeListener() {
220 public void stateChanged(ChangeEvent e) {
221 int height = ((JSlider)e.getSource()).getValue();
222 tableView.setRowHeight(height);
223 tableView.repaint();
224 }
225 });
226
227 controlPanel.add(column2);
228
229 relatedComponents.removeAllElements();
231 relatedComponents.add(interCellSpacingSlider);
232 relatedComponents.add(rowHeightSlider);
233 buildAccessibleGroup(relatedComponents);
234
235 tableAggregate = createTable();
237 getDemoPanel().add(tableAggregate, BorderLayout.CENTER);
238
239
240 JPanel selectMode = new JPanel();
242 column3.setLayout(new ColumnLayout());
243 selectMode.setBorder(new TitledBorder(getString("TableDemo.selection_mode")));
244
245
246 selectionModeComboBox = new JComboBox();
247 selectionModeComboBox.addItem(getString("TableDemo.single"));
248 selectionModeComboBox.addItem(getString("TableDemo.one_range"));
249 selectionModeComboBox.addItem(getString("TableDemo.multiple_ranges"));
250 selectionModeComboBox.setSelectedIndex(tableView.getSelectionModel().getSelectionMode());
251 selectionModeComboBox.addItemListener(new ItemListener() {
252 public void itemStateChanged(ItemEvent e) {
253 JComboBox source = (JComboBox)e.getSource();
254 tableView.setSelectionMode(source.getSelectedIndex());
255 }
256 });
257
258 selectMode.add(selectionModeComboBox);
259 column3.add(selectMode);
260
261
263 JPanel resizeMode = new JPanel();
264
265 resizeMode.setBorder(new TitledBorder(getString("TableDemo.autoresize_mode")));
266
267
268 resizeModeComboBox = new JComboBox();
269 resizeModeComboBox.addItem(getString("TableDemo.off"));
270 resizeModeComboBox.addItem(getString("TableDemo.column_boundries"));
271 resizeModeComboBox.addItem(getString("TableDemo.subsequent_columns"));
272 resizeModeComboBox.addItem(getString("TableDemo.last_column"));
273 resizeModeComboBox.addItem(getString("TableDemo.all_columns"));
274 resizeModeComboBox.setSelectedIndex(tableView.getAutoResizeMode());
275 resizeModeComboBox.addItemListener(new ItemListener() {
276 public void itemStateChanged(ItemEvent e) {
277 JComboBox source = (JComboBox)e.getSource();
278 tableView.setAutoResizeMode(source.getSelectedIndex());
279 }
280 });
281
282 resizeMode.add(resizeModeComboBox);
283 column3.add(resizeMode);
284
285 controlPanel.add(column3);
286
287 setTableControllers();
289 }
291
299 void buildAccessibleGroup(Vector components) {
300
301 AccessibleContext context = null;
302 int numComponents = components.size();
303 Object[] group = components.toArray();
304 Object object = null;
305 for (int i = 0; i < numComponents; ++i) {
306 object = components.elementAt(i);
307 if (object instanceof Accessible) {
308 context = ((Accessible)components.elementAt(i)).
309 getAccessibleContext();
310 context.getAccessibleRelationSet().add(
311 new AccessibleRelation(
312 AccessibleRelation.MEMBER_OF, group));
313 }
314 }
315 }
317
322 private void setTableControllers() {
323
324 setAccessibleController(isColumnReorderingAllowedCheckBox,
326 tableAggregate);
327 setAccessibleController(showHorizontalLinesCheckBox,
328 tableAggregate);
329 setAccessibleController(showVerticalLinesCheckBox,
330 tableAggregate);
331 setAccessibleController(isColumnSelectionAllowedCheckBox,
332 tableAggregate);
333 setAccessibleController(isRowSelectionAllowedCheckBox,
334 tableAggregate);
335 setAccessibleController(interCellSpacingSlider,
336 tableAggregate);
337 setAccessibleController(rowHeightSlider,
338 tableAggregate);
339 setAccessibleController(selectionModeComboBox,
340 tableAggregate);
341 setAccessibleController(resizeModeComboBox,
342 tableAggregate);
343 }
345
351 private void setAccessibleController(JComponent controller,
352 JComponent target) {
353 AccessibleRelationSet controllerRelations =
354 controller.getAccessibleContext().getAccessibleRelationSet();
355 AccessibleRelationSet targetRelations =
356 target.getAccessibleContext().getAccessibleRelationSet();
357
358 controllerRelations.add(
359 new AccessibleRelation(
360 AccessibleRelation.CONTROLLER_FOR, target));
361 targetRelations.add(
362 new AccessibleRelation(
363 AccessibleRelation.CONTROLLED_BY, controller));
364 }
366 public JScrollPane createTable() {
367
368 final String[] names = {
370 getString("TableDemo.first_name"),
371 getString("TableDemo.last_name"),
372 getString("TableDemo.favorite_color"),
373 getString("TableDemo.favorite_movie"),
374 getString("TableDemo.favorite_number"),
375 getString("TableDemo.favorite_food")
376 };
377
378 ImageIcon apple = createImageIcon("ImageClub/food/apple.jpg", getString("TableDemo.apple"));
379 ImageIcon asparagus = createImageIcon("ImageClub/food/asparagus.jpg", getString("TableDemo.asparagus"));
380 ImageIcon banana = createImageIcon("ImageClub/food/banana.jpg", getString("TableDemo.banana"));
381 ImageIcon broccoli = createImageIcon("ImageClub/food/broccoli.jpg", getString("TableDemo.broccoli"));
382 ImageIcon cantaloupe = createImageIcon("ImageClub/food/cantaloupe.jpg", getString("TableDemo.cantaloupe"));
383 ImageIcon carrot = createImageIcon("ImageClub/food/carrot.jpg", getString("TableDemo.carrot"));
384 ImageIcon corn = createImageIcon("ImageClub/food/corn.jpg", getString("TableDemo.corn"));
385 ImageIcon grapes = createImageIcon("ImageClub/food/grapes.jpg", getString("TableDemo.grapes"));
386 ImageIcon grapefruit = createImageIcon("ImageClub/food/grapefruit.jpg", getString("TableDemo.grapefruit"));
387 ImageIcon kiwi = createImageIcon("ImageClub/food/kiwi.jpg", getString("TableDemo.kiwi"));
388 ImageIcon onion = createImageIcon("ImageClub/food/onion.jpg", getString("TableDemo.onion"));
389 ImageIcon pear = createImageIcon("ImageClub/food/pear.jpg", getString("TableDemo.pear"));
390 ImageIcon peach = createImageIcon("ImageClub/food/peach.jpg", getString("TableDemo.peach"));
391 ImageIcon pepper = createImageIcon("ImageClub/food/pepper.jpg", getString("TableDemo.pepper"));
392 ImageIcon pickle = createImageIcon("ImageClub/food/pickle.jpg", getString("TableDemo.pickle"));
393 ImageIcon pineapple = createImageIcon("ImageClub/food/pineapple.jpg", getString("TableDemo.pineapple"));
394 ImageIcon raspberry = createImageIcon("ImageClub/food/raspberry.jpg", getString("TableDemo.raspberry"));
395 ImageIcon sparegrass = createImageIcon("ImageClub/food/asparagus.jpg", getString("TableDemo.sparegrass"));
396 ImageIcon strawberry = createImageIcon("ImageClub/food/strawberry.jpg", getString("TableDemo.strawberry"));
397 ImageIcon tomato = createImageIcon("ImageClub/food/tomato.jpg", getString("TableDemo.tomato"));
398 ImageIcon watermelon = createImageIcon("ImageClub/food/watermelon.jpg", getString("TableDemo.watermelon"));
399
400 NamedColor aqua = new NamedColor(new Color(127, 255, 212), getString("TableDemo.aqua"));
401 NamedColor beige = new NamedColor(new Color(245, 245, 220), getString("TableDemo.beige"));
402 NamedColor black = new NamedColor(Color.black, getString("TableDemo.black"));
403 NamedColor blue = new NamedColor(new Color(0, 0, 222), getString("TableDemo.blue"));
404 NamedColor eblue = new NamedColor(Color.blue, getString("TableDemo.eblue"));
405 NamedColor jfcblue = new NamedColor(new Color(204, 204, 255), getString("TableDemo.jfcblue"));
406 NamedColor jfcblue2 = new NamedColor(new Color(153, 153, 204), getString("TableDemo.jfcblue2"));
407 NamedColor cybergreen = new NamedColor(Color.green.darker().brighter(), getString("TableDemo.cybergreen"));
408 NamedColor darkgreen = new NamedColor(new Color(0, 100, 75), getString("TableDemo.darkgreen"));
409 NamedColor forestgreen = new NamedColor(Color.green.darker(), getString("TableDemo.forestgreen"));
410 NamedColor gray = new NamedColor(Color.gray, getString("TableDemo.gray"));
411 NamedColor green = new NamedColor(Color.green, getString("TableDemo.green"));
412 NamedColor orange = new NamedColor(new Color(255, 165, 0), getString("TableDemo.orange"));
413 NamedColor purple = new NamedColor(new Color(160, 32, 240), getString("TableDemo.purple"));
414 NamedColor red = new NamedColor(Color.red, getString("TableDemo.red"));
415 NamedColor rustred = new NamedColor(Color.red.darker(), getString("TableDemo.rustred"));
416 NamedColor sunpurple = new NamedColor(new Color(100, 100, 255), getString("TableDemo.sunpurple"));
417 NamedColor suspectpink = new NamedColor(new Color(255, 105, 180), getString("TableDemo.suspectpink"));
418 NamedColor turquoise = new NamedColor(new Color(0, 255, 255), getString("TableDemo.turquoise"));
419 NamedColor violet = new NamedColor(new Color(238, 130, 238), getString("TableDemo.violet"));
420 NamedColor yellow = new NamedColor(Color.yellow, getString("TableDemo.yellow"));
421
422 final Object[][] data = {
424 {"Mike", "Albers", green, getString("TableDemo.brazil"), new Double(44.0), strawberry},
425 {"Mark", "Andrews", blue, getString("TableDemo.curse"), new Double(3), grapes},
426 {"Brian", "Beck", black, getString("TableDemo.bluesbros"), new Double(2.7182818285), raspberry},
427 {"Lara", "Bunni", red, getString("TableDemo.airplane"), new Double(15), strawberry},
428 {"Roger", "Brinkley", blue, getString("TableDemo.man"), new Double(13), peach},
429 {"Brent", "Christian", black, getString("TableDemo.bladerunner"), new Double(23), broccoli},
430 {"Mark", "Davidson", darkgreen, getString("TableDemo.brazil"), new Double(27), asparagus},
431 {"Jeff", "Dinkins", blue, getString("TableDemo.ladyvanishes"), new Double(8), kiwi},
432 {"Ewan", "Dinkins", yellow, getString("TableDemo.bugs"), new Double(2), strawberry},
433 {"Amy", "Fowler", violet, getString("TableDemo.reservoir"), new Double(3), raspberry},
434 {"Hania", "Gajewska", purple, getString("TableDemo.jules"), new Double(5), raspberry},
435 {"David", "Geary", blue, getString("TableDemo.pulpfiction"), new Double(3), watermelon},
436 {"Eric", "Hawkes", blue, getString("TableDemo.bladerunner"), new Double(.693), pickle},
438 {"Shannon", "Hickey", green, getString("TableDemo.shawshank"), new Integer(2), grapes},
439 {"Earl", "Johnson", green, getString("TableDemo.pulpfiction"), new Double(8), carrot},
440 {"Robi", "Kahn", green, getString("TableDemo.goodfellas"), new Double(89), apple},
441 {"Robert", "Kim", blue, getString("TableDemo.mohicans"), new Double(655321), strawberry},
442 {"Janet", "Koenig", turquoise, getString("TableDemo.lonestar"), new Double(7), peach},
443 {"Jeff", "Kesselman", blue, getString("TableDemo.stuntman"), new Double(17), pineapple},
444 {"Onno", "Kluyt", orange, getString("TableDemo.oncewest"), new Double(8), broccoli},
445 {"Peter", "Korn", sunpurple, getString("TableDemo.musicman"), new Double(12), sparegrass},
446
447 {"Rick", "Levenson", black, getString("TableDemo.harold"), new Double(1327), raspberry},
448 {"Brian", "Lichtenwalter", jfcblue, getString("TableDemo.fifthelement"), new Double(22), pear},
449 {"Malini", "Minasandram", beige, getString("TableDemo.joyluck"), new Double(9), corn},
450 {"Michael", "Martak", green, getString("TableDemo.city"), new Double(3), strawberry},
451 {"David", "Mendenhall", forestgreen, getString("TableDemo.schindlerslist"), new Double(7), peach},
452 {"Phil", "Milne", suspectpink, getString("TableDemo.withnail"), new Double(3), banana},
453 {"Lynn", "Monsanto", cybergreen, getString("TableDemo.dasboot"), new Double(52), peach},
454 {"Hans", "Muller", rustred, getString("TableDemo.eraserhead"), new Double(0), pineapple},
455 {"Joshua", "Outwater", blue, getString("TableDemo.labyrinth"), new Integer(3), pineapple},
456 {"Tim", "Prinzing", blue, getString("TableDemo.firstsight"), new Double(69), pepper},
457 {"Raj", "Premkumar", jfcblue2, getString("TableDemo.none"), new Double(7), broccoli},
458 {"Howard", "Rosen", green, getString("TableDemo.defending"), new Double(7), strawberry},
459 {"Ray", "Ryan", black, getString("TableDemo.buckaroo"),
460 new Double(3.141592653589793238462643383279502884197169399375105820974944), banana},
461 {"Georges", "Saab", aqua, getString("TableDemo.bicycle"), new Double(290), cantaloupe},
462 {"Tom", "Santos", blue, getString("TableDemo.spinaltap"), new Double(241), pepper},
463 {"Rich", "Schiavi", blue, getString("TableDemo.repoman"), new Double(0xFF), pepper},
464 {"Nancy", "Schorr", green, getString("TableDemo.fifthelement"), new Double(47), watermelon},
465 {"Keith", "Sprochi", darkgreen, getString("TableDemo.2001"), new Integer(13), watermelon},
466 {"Matt", "Tucker", eblue, getString("TableDemo.starwars"), new Integer(2), broccoli},
467 {"Dimitri", "Trembovetsky", red, getString("TableDemo.aliens"), new Integer(222), tomato},
468 {"Scott", "Violet", violet, getString("TableDemo.raiders"), new Integer(-97), banana},
469 {"Kathy", "Walrath", blue, getString("TableDemo.thinman"), new Integer(8), pear},
470 {"Nathan", "Walrath", black, getString("TableDemo.chusingura"), new Integer(3), grapefruit},
471 {"Steve", "Wilson", green, getString("TableDemo.raiders"), new Integer(7), onion},
472 {"Kathleen", "Zelony", gray, getString("TableDemo.dog"), new Integer(13), grapes}
473 };
474
475 TableModel dataModel = new AbstractTableModel() {
477 public int getColumnCount() { return names.length; }
478 public int getRowCount() { return data.length;}
479 public Object getValueAt(int row, int col) {return data[row][col];}
480 public String getColumnName(int column) {return names[column];}
481 public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
482 public boolean isCellEditable(int row, int col) {return col != 5;}
483 public void setValueAt(Object aValue, int row, int column) { data[row][column] = aValue; }
484 };
485
486
487 tableView = new JTable(dataModel);
489
490 DefaultTableCellRenderer colorRenderer = new DefaultTableCellRenderer() {
492 public void setValue(Object value) {
493 if (value instanceof NamedColor) {
494 NamedColor c = (NamedColor) value;
495 setBackground(c);
496 setForeground(c.getTextColor());
497 setText(c.toString());
498 } else {
499 super.setValue(value);
500 }
501 }
502 };
503
504 JComboBox comboBox = new JComboBox();
506 comboBox.addItem(aqua);
507 comboBox.addItem(beige);
508 comboBox.addItem(black);
509 comboBox.addItem(blue);
510 comboBox.addItem(eblue);
511 comboBox.addItem(jfcblue);
512 comboBox.addItem(jfcblue2);
513 comboBox.addItem(cybergreen);
514 comboBox.addItem(darkgreen);
515 comboBox.addItem(forestgreen);
516 comboBox.addItem(gray);
517 comboBox.addItem(green);
518 comboBox.addItem(orange);
519 comboBox.addItem(purple);
520 comboBox.addItem(red);
521 comboBox.addItem(rustred);
522 comboBox.addItem(sunpurple);
523 comboBox.addItem(suspectpink);
524 comboBox.addItem(turquoise);
525 comboBox.addItem(violet);
526 comboBox.addItem(yellow);
527
528 TableColumn colorColumn = tableView.getColumn(getString("TableDemo.favorite_color"));
529 colorColumn.setCellEditor(new DefaultCellEditor(comboBox));
531
532 colorRenderer.setHorizontalAlignment(JLabel.CENTER);
533 colorColumn.setCellRenderer(colorRenderer);
534
535 tableView.setRowHeight(INITIAL_ROWHEIGHT);
536
537 scrollpane = new JScrollPane(tableView);
538 return scrollpane;
539 }
540
541 class NamedColor extends Color {
542 String name;
543 public NamedColor(Color color, String name) {
544 super(color.getRGB());
545 this.name = name;
546 }
547
548 public Color getTextColor() {
549 int r = getRed();
550 int g = getGreen();
551 int b = getBlue();
552 if(r > 240 || g > 240) {
553 return Color.black;
554 } else {
555 return Color.white;
556 }
557 }
558
559 public String toString() {
560 return name;
561 }
562 }
563
564 class ColumnLayout implements LayoutManager {
565 int xInset = 5;
566 int yInset = 5;
567 int yGap = 2;
568
569 public void addLayoutComponent(String s, Component c) {}
570
571 public void layoutContainer(Container c) {
572 Insets insets = c.getInsets();
573 int height = yInset + insets.top;
574
575 Component[] children = c.getComponents();
576 Dimension compSize = null;
577 for (int i = 0; i < children.length; i++) {
578 compSize = children[i].getPreferredSize();
579 children[i].setSize(compSize.width, compSize.height);
580 children[i].setLocation( xInset + insets.left, height);
581 height += compSize.height + yGap;
582 }
583
584 }
585
586 public Dimension minimumLayoutSize(Container c) {
587 Insets insets = c.getInsets();
588 int height = yInset + insets.top;
589 int width = 0 + insets.left + insets.right;
590
591 Component[] children = c.getComponents();
592 Dimension compSize = null;
593 for (int i = 0; i < children.length; i++) {
594 compSize = children[i].getPreferredSize();
595 height += compSize.height + yGap;
596 width = Math.max(width, compSize.width + insets.left + insets.right + xInset*2);
597 }
598 height += insets.bottom;
599 return new Dimension( width, height);
600 }
601
602 public Dimension preferredLayoutSize(Container c) {
603 return minimumLayoutSize(c);
604 }
605
606 public void removeLayoutComponent(Component c) {}
607 }
608
609
610 }
611