Java GUI building with the AWT AWT Abstract Window Toolkit Present in all Java implementations Described in almost every Java textbook Adequate for many applications Uses the controls defined by your OS therefore it s least common denominator Difficult to build an attractive GUI import java awt import java awt event 2 Swing Requires Java 2 or 1 1 and a separate huge download More controls and they are more flexible Gives a choice of look and feel packages Much easier to build an attractive GUI import javax swing 3 Swing vs AWT Swing is bigger and slower Swing is more flexible and better looking Swing and AWT are incompatible you can use either but you can t mix them Actually you can but it s tricky and not worth doing Learning the AWT is a good start on learning Swing AWT Button b new Button OK Swing JButton b new JButton OK 4 To build a GUI Make somewhere to display things a Frame a Window or an Applet Create some Components such as buttons text areas panels etc Add your Components to your display area Arrange or lay out your Components Attach Listeners to your Components Interacting with a Component causes an Event to occur A Listener gets a message when an interesting event occurs and executes some code to deal with it 5 Containers and Components The job of a Container is to hold and display Components Some common subclasses of Component are Button Checkbox Label Scrollbar TextField and TextArea A Container is also a Component This allows Containers to be nested Some Container subclasses are Panel and Applet Window and Frame 6 An Applet is Panel is a Container java lang Object java awt Component java awt Container java awt Panel java applet Applet so you can display things in an Applet 7 Example A Life applet Container Applet Containers Panels Component Canvas Components Buttons Components TextFields Components Labels 8 Applets An application has a public static void main String args method but an Applet usually does not An Applet s main method is in the Browser To write an Applet you extend Applet and override some of its methods The most important methods are init start and paint Graphics g 9 To create an applet public class MyApplet extends Applet this is the only way to make an Applet You can add components to the applet The best place to add components is in init You can paint directly on the applet but it s better to paint on a contained component Do all painting from paint Graphics g 10 Some types of components Button Label Scrollba r Choice TextFiel d Checkbox List TextArea Button Checkbo CheckboxGrou 11 Creating components Label lab new Label Hi Dave Button but new Button Click me Checkbox toggle new Checkbox toggle TextField txt new TextField Initial text 20 Scrollbar scrolly new Scrollbar Scrollbar HORIZONTAL initialValue bubbleSize minValue maxValue 12 Adding components to the Applet class MyApplet extends Applet public void init add lab same as this add lab add but add toggle add txt add scrolly 13 Creating a Frame When you create an Applet you get a Panel for free When you write a GUI for an application you need to create and use a Frame Frame frame new Frame frame setTitle My Frame frame setSize 300 200 width height add components frame setVisible true Or class MyClass extends Frame setTitle My Frame in some instance method 14 Arranging components Every Container has a layout manager The default layout for a Panel is FlowLayout An Applet is a Panel Therefore the default layout for a Applet is FlowLayout You could set it explicitly with setLayout new FlowLayout You could change it to some other layout manager 15 FlowLayout Use add component to add to a component when using a FlowLayout Components are added left to right If no room a new row is started Exact layout depends on size of Applet Components are made as small as possible FlowLayout is convenient but often ugly 16 Complete example FlowLayout import java awt import java applet public class FlowLayoutExample extends Applet public void init setLayout new FlowLayout default add new Button One add new Button Two add new Button Three add new Button Four add new Button Five add new Button Six 17 BorderLayout At most five components can be added If you want more components add a Panel then add components to it setLayout new BorderLayout add new Button NORTH BorderLayout NORTH 18 BorderLayout with five Buttons public void init setLayout new BorderLayout add new Button NORTH BorderLayout NORTH add new Button SOUTH BorderLayout SOUTH add new Button EAST BorderLayout EAST add new Button WEST BorderLayout WEST add new Button CENTER BorderLayout CENTER 19 Complete example BorderLayout import java awt import java applet public class BorderLayoutExample extends Applet public void init setLayout new BorderLayout add new Button One BorderLayout NORTH add new Button Two BorderLayout WEST add new Button Three BorderLayout CENTER add new Button Four BorderLayout EAST add new Button Five 20 Using a Panel Panel p new Panel add p BorderLayout SOUTH p add new Button Button 1 p add new Button Button 2 21 GridLayout The GridLayout manager divides the container up into a given number of rows and columns new GridLayout rows columns All sections of the grid are equally sized and as large as possible 22 Complete example GridLayout import java awt import java applet public class GridLayoutExample extends Applet public void init setLayout new GridLayout 2 3 add new Button One add new Button Two add new Button Three add new Button Four add new Button Five 23 Making components active Most components already appear to do something buttons click text appears To associate an action with a component attach a listener to it Components send events listeners listen for events Different components may send different events and require different listeners 24 Listeners Listeners are interfaces not classes class MyButtonListener implements ActionListener An interface is a group of methods that must be supplied When you say implements you are promising to supply those methods 25 Writing a Listener For a Button you need an ActionListener b1 addActionListener new MyButtonListener An ActionListener must have an actionPerformed ActionEvent method public void actionPerformed ActionEvent e 26 MyButtonListener public void init b1 addActionListener new MyButtonListener class MyButtonListener implements ActionListener public void actionPerformed ActionEvent e showStatus Ouch 27 Listeners for TextFields An ActionListener listens for someone hitting the Enter
View Full Document
Unlocking...