/* * Swing 1.0.2 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class LayoutExample extends JFrame implements ActionListener, ItemListener { private boolean inAnApplet = true; JButton border, flow, panel, card, grid, gridBag; JButton OK, cancel, reset, two, three, four; JPanel p1, p2, p3, p4, cards; JTextField tfield; public LayoutExample() { getContentPane().setLayout(new GridLayout(1,2)); setFont(new Font("Helvetica", Font.PLAIN, 14)); p1 = new JPanel(); p1.setLayout(new GridLayout(8,1)); p2 = new JPanel(); p1.setBackground(Color.gray); p2.setBackground(Color.white); getContentPane().add(p1); getContentPane().add(p2); border = new JButton("Border Layout"); flow = new JButton("Flow Layout"); card = new JButton("Card Layout"); grid = new JButton("Grid Layout"); gridBag = new JButton("GridBag Layout"); border.addActionListener(this); flow.addActionListener(this); card.addActionListener(this); grid.addActionListener(this); gridBag.addActionListener(this); p1.add(border); p1.add(flow); p1.add(card); p1.add(grid); p1.add(gridBag); p2.add(new JLabel("<-- Select a layout to view ...")); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent event){ if (inAnApplet) { dispose(); } else { System.exit(0); } } }); } public void gridBag(){ GridBagConstraints c = new GridBagConstraints(); GridBagLayout gridbag = new GridBagLayout(); p2.setLayout(gridbag); c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; c.gridwidth = GridBagConstraints.REMAINDER; JLabel top = new JLabel("GridBag Layout"); top.setHorizontalAlignment(JLabel.CENTER); gridbag.setConstraints(top, c); p2.add(top); c.gridwidth = GridBagConstraints.RELATIVE; JTextField name = new JTextField("Name:", 25); gridbag.setConstraints(name, c); p2.add(name); c.gridwidth = GridBagConstraints.REMAINDER; JTextField addr = new JTextField("Address:", 25); gridbag.setConstraints(addr, c); p2.add(addr); JTextArea comments = new JTextArea(3, 25); comments.setEditable(true); comments.setText("Comments:"); gridbag.setConstraints(comments, c); p2.add(comments); c.insets = new Insets(15, 0, 0, 0); c.fill=GridBagConstraints.NONE; c.gridwidth = GridBagConstraints.RELATIVE; OK = new JButton("OK"); gridbag.setConstraints(OK, c); p2.add(OK); c.gridheight=1; cancel = new JButton("Cancel"); gridbag.setConstraints(cancel, c); p2.add(cancel); OK.addActionListener(this); cancel.addActionListener(this); name.addActionListener(this); addr.addActionListener(this); } public void actionPerformed(ActionEvent event){ Object source = event.getSource(); if( source == OK){ p2.removeAll(); p2.setLayout(new FlowLayout()); p2.add(new JLabel("<-- Select a layout to view ...")); p2.validate(); p2.repaint(); } if( source == cancel){ p2.removeAll(); gridBag(); p2.validate(); p2.repaint(); } if(source == two){ p2.removeAll(); p2.setLayout(new GridLayout(0,2)); OK = new JButton("OK"); p2.add(two); p2.add(three); p2.add(four); p2.add(OK); OK.addActionListener(this); p2.validate(); p2.repaint(); } if( source == three){ p2.removeAll(); p2.setLayout(new GridLayout(0,3)); OK = new JButton("OK"); p2.add(two); p2.add(three); p2.add(four); p2.add(OK); OK.addActionListener(this); p2.validate(); p2.repaint(); } if( source == four){ p2.removeAll(); p2.setLayout(new GridLayout(0,4)); OK = new JButton("OK"); p2.add(two); p2.add(three); p2.add(four); p2.add(OK); OK.addActionListener(this); p2.validate(); p2.repaint(); } if( source == tfield){ p2.removeAll(); p2.setLayout(new FlowLayout()); p2.add(new JLabel("<-- Select a layout to view ...")); p2.validate(); p2.repaint(); } if( source == border){ p2.removeAll(); p2.setLayout(new BorderLayout()); JLabel dialogLabel = new JLabel(); dialogLabel.setHorizontalAlignment(JLabel.CENTER); dialogLabel.setText("Border Layout"); String[] data = {"Apple tree", "Orange tree", "Pear tree", "Peach tree", "Cherry tree", "Apricot tree"}; JList items = new JList(data); OK = new JButton("OK"); p2.add("North", dialogLabel); p2.add("South", OK); p2.add("Center", items); OK.addActionListener(this); p2.validate(); p2.repaint(); } if( source == flow){ p2.removeAll(); p2.setLayout(new FlowLayout()); p2.add(new JLabel("Flow Layout")); OK = new JButton("OK"); p2.add(new JButton("An extremely long name")); p2.add(new JButton("Short")); p2.add(new JButton("Medium Length")); p2.add(OK); p2.add(new JScrollBar(JScrollBar.HORIZONTAL)); OK.addActionListener(this); p2.validate(); p2.repaint(); } if( source == card){ p2.removeAll(); String BUTTONPANEL = "Show panel with Buttons"; String TEXTPANEL = "Show panel with TextField"; p2.setLayout(new BorderLayout()); JPanel c2 = new JPanel(); c2.setBackground(Color.white); Choice c = new Choice(); c.add(BUTTONPANEL); c.add(TEXTPANEL); c2.add(c); JLabel cardLabel = new JLabel("Card Layout"); cardLabel.setHorizontalAlignment(JLabel.CENTER); p2.add("North", cardLabel); p2.add("Center", c2); cards = new JPanel(); cards.setLayout(new CardLayout()); p3 = new JPanel(); p3.setBackground(Color.white); p4 = new JPanel(); p4.setBackground(Color.white); OK = new JButton("OK"); JButton quit = new JButton("Quit"); reset = new JButton("Reset"); p3.add(OK); p3.add(quit); p3.add(reset); tfield = new JTextField("Enter name:", 20); p4.add(tfield); cards.add(BUTTONPANEL, p3); cards.add(TEXTPANEL, p4); p2.add("South", cards); OK.addActionListener(this); c.addItemListener(this); tfield.addActionListener(this); p2.validate(); p2.repaint(); } if( source == grid){ p2.removeAll(); p2.setLayout(new GridLayout(5,1)); two = new JButton("2 cols."); three = new JButton("3 cols."); four = new JButton("4 cols."); OK = new JButton("OK"); OK.addActionListener(this); two.addActionListener(this); three.addActionListener(this); four.addActionListener(this); p2.add(new JLabel("Grid Layout 1 col.")); p2.add(two); p2.add(three); p2.add(four); p2.add(OK); p2.validate(); p2.repaint(); } if( source == gridBag){ p2.removeAll(); gridBag(); p2.validate(); p2.repaint(); } } public void itemStateChanged(ItemEvent event) { CardLayout cl = (CardLayout)(cards.getLayout()); cl.show(cards, (String)event.getItem()); } public static void main(String args[]) { try{ UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); }catch (Exception e) { System.err.println("Couldn't use the cross-platform" + "look and feel: " + e); } JFrame frame = new LayoutExample(); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; frame.addWindowListener(l); frame.pack(); frame.setVisible(true); } }