import java.awt.*; import java.awt.event.*; /** * Layout games part 2. * (part 1 is in file ConverterDemo1.java - BorderLayout) * BorderLayout * Default layout of Frame is BorderLayout. * BorderLayout has 5 'places':NORTH, SOUTH, EAST,WEST, CENTER * Our program has 7 components. A problem. * Solution: Panels * * Add some action -- ConverterDemo2.java */ public class ConverterDemo1a extends Frame { Button btnConvert, btnClear, btnExit; Label lblFrom, lblTo; TextField tfFrom, tfTo; ConverterDemo1a () { super("Unit Conversion Demo"); // call a parent constructor // (must come first) btnConvert = new Button("Convert"); btnClear = new Button("Clear"); btnExit = new Button("Exit"); lblFrom = new Label("FROM:", Label.CENTER); lblTo = new Label("TO:", Label.CENTER); tfFrom = new TextField(20); tfTo = new TextField(20); // Using the default BorderLayout for Frames // Panels (and therefore Applets) default to FlowLayout Panel pnlTop = new Panel(); // change default layout pnlTop.setLayout(new GridLayout(0,2)); // This time we keep the default Panel pnlBottom = new Panel(); pnlTop.add(lblFrom); pnlTop.add(lblTo); pnlBottom.add(btnConvert); pnlBottom.add(btnClear); pnlBottom.add(btnExit); // peculiar results due to the policy of BorderLayout // unless you use pack() to let the layoutmanager choose // a useful frame size. add(pnlTop, BorderLayout.NORTH); add(pnlBottom, BorderLayout.SOUTH); add(tfFrom, BorderLayout.WEST); add(tfTo, BorderLayout.EAST); setBounds(400, 300, 300, 400); pack(); // Window class. Lets layout manager choose // perferred size for Frame. setVisible(true); this.addWindowListener(new WindowAdapter () { public void windowClosing(WindowEvent wev) { dispose(); } } ); } public static void main(String [] args) { ConverterDemo1a cd1a = new ConverterDemo1a(); } }