/* Panel1.java CIS 160 David Klick 2011-09-24 Demonstrates nested containers for GUI layout, radio buttons, button groups, combo boxes, a WindowListener, and packing. */ import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.SwingUtilities; public class Panel1 extends JFrame { Panel1() { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } private void createAndShowGUI() { // create containers for various sections of GUI JPanel pnlWest = new JPanel(); JPanel pnlCenter = new JPanel(); JPanel pnlCenterNorth = new JPanel(); JPanel pnlCenterCenter = new JPanel(); JPanel pnlCenterSouth = new JPanel(); // get content pane of current JFrame (this object) Container c = getContentPane(); // set up layout managers for various containers pnlWest.setLayout(new GridLayout(5,1)); pnlCenter.setLayout(new BorderLayout()); pnlCenterNorth.setLayout(new BorderLayout()); pnlCenterCenter.setLayout(new FlowLayout()); pnlCenterSouth.setLayout(new FlowLayout()); c.setLayout(new BorderLayout()); // create components JRadioButton rdo1 = new JRadioButton("First"); JRadioButton rdo2 = new JRadioButton("Second"); JRadioButton rdo3 = new JRadioButton("Third", true); JRadioButton rdo4 = new JRadioButton("Fourth"); JRadioButton rdo5 = new JRadioButton("Fifth"); JLabel lbl1 = new JLabel("Hello, world!"); JButton btn1 = new JButton("Click me"); // (the list boxes need String arrays for contents) String[] lstArray1 = { "Craig", "Emilie", "Mike", "Mike", "Tim" }; String[] lstArray2 = { "A350", "A372", "A373", "A374", "A375" }; JComboBox cbo1 = new JComboBox(lstArray1); JComboBox cbo2 = new JComboBox(lstArray2); // make radio buttons exclusive by placing in button group ButtonGroup bgrp = new ButtonGroup(); bgrp.add(rdo1); bgrp.add(rdo2); bgrp.add(rdo3); bgrp.add(rdo4); bgrp.add(rdo5); // add components to containers pnlWest.add(rdo1); pnlWest.add(rdo2); pnlWest.add(rdo3); pnlWest.add(rdo4); pnlWest.add(rdo5); pnlCenterNorth.add(lbl1, BorderLayout.CENTER); pnlCenterCenter.add(cbo1); pnlCenterCenter.add(cbo2); pnlCenterSouth.add(btn1); // add subpanels to pnlCenter pnlCenter.add(pnlCenterNorth, BorderLayout.NORTH); pnlCenter.add(pnlCenterCenter, BorderLayout.CENTER); pnlCenter.add(pnlCenterSouth, BorderLayout.SOUTH); // add main panels to main container (content pane) c.add(pnlWest, BorderLayout.WEST); c.add(pnlCenter, BorderLayout.CENTER); // just to be nice, add a WindowListener to close application // - since I run old Java 1.2, I can't set the default close operation addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // set our size and make us visible pack(); setResizable(false); setVisible(true); } public static void main(String[] args) { Panel1 app = new Panel1(); } }