Presentation is loading. Please wait.

Presentation is loading. Please wait.

A Brief Overview of the Abstract Windowing Toolkit (AWT)

Similar presentations


Presentation on theme: "A Brief Overview of the Abstract Windowing Toolkit (AWT)"— Presentation transcript:

1 A Brief Overview of the Abstract Windowing Toolkit (AWT)
Motivation. Typical Frame setup. BorderLayout, FlowLayout, GridLayout. Component class hierarchy User events Graphics contexts Handling mouse events CSE S. Tanimoto Java Abstract Windowing Toolkit

2 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
Motivation 1. A portable graphics model and window system (Unix, Microsoft Windows, Macintosh). 2. Support interaction in a general way (Mouse events, keyboard events). 3. Provide high-level building blocks (widgets like buttons and canvases in JDK1.0 and 1.1, and more complex interface components such as TreeView in JDK in “Swing”). 4. Permit integration with browsers (Netscape Navigator, Microsoft Internet Explorer).. CSE S. Tanimoto Java Abstract Windowing Toolkit

3 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
Typical Frame Setup // RecipeViewer.java Steve Tanimoto, 12 April 1999. import java.applet.*; import java.awt.*; import java.awt.event.*; public class RecipeViewer extends Frame implements WindowListener, ItemListener { TextArea recipeTextArea; Choice recipeSelector; public static void main( String [] args) { RecipeViewer rv = new RecipeViewer(); rv.init(); rv.show(); } CSE S. Tanimoto Java Abstract Windowing Toolkit

4 RecipeViewer.java (Continued)
public void init() { setSize(300, 200); addWindowListener(this); // for the close box. setLayout( new BorderLayout() ); add(new Label("The Recipe Viewer"),BorderLayout.NORTH); recipeTextArea = new TextArea(100, 20); add(recipeTextArea, BorderLayout.CENTER); recipeSelector = new Choice(); recipeSelector.addItem("Select recipe"); recipeSelector.addItem("Limoncello"); recipeSelector.addItem("Salsa"); add(recipeSelector, BorderLayout.SOUTH); recipeSelector.addItemListener(this); // for the Choice. } CSE S. Tanimoto Java Abstract Windowing Toolkit

5 RecipeViewer.java (Continued)
public void itemStateChanged(ItemEvent e) { String item = recipeSelector.getSelectedItem(); if (item.equals("Limoncello")) { recipeTextArea.setText( "To make limoncello, soak the zest of 15 lemons\n" + "for 30 days in 1 liter of 100 proof vodka.\n" + "Mix in 1 liter of cool sugar syrup made by cooking\n" + "1 liter sugar in 1 liter water for 5 min.\n" + "Add 1 more liter vodka, soak for 30 more days, and\n" + "strain out into clean storage bottles."); } else if (item.equals("Salsa")) { "To make salsa, wash 3 lbs ripe tomatoes and dice.\n" + "Add 3 minced jalapeno peppers, 1 bunch fresh cilantro\n" + "also minced, 2 minced peeled onions, juice of 2 lemons,\n" + "and 1 teaspoon salt."); } else recipeTextArea.setText("Unknown choice"); } CSE S. Tanimoto Java Abstract Windowing Toolkit

6 RecipeViewer.java (Continued)
public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } public void windowClosed(WindowEvent e) {} public void windowOpened(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} CSE S. Tanimoto Java Abstract Windowing Toolkit

7 RecipeViewer.java (Continued)
CSE S. Tanimoto Java Abstract Windowing Toolkit

8 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
BorderLayout NORTH WEST EAST CENTER SOUTH CSE S. Tanimoto Java Abstract Windowing Toolkit

9 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
FlowLayout setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10)) CSE S. Tanimoto Java Abstract Windowing Toolkit

10 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
GridLayout setLayout(new GridLayout(3, 2, 5, 5)); CSE S. Tanimoto Java Abstract Windowing Toolkit

11 Component Class Hierarchy
AWTEvent Container Panel Applet Button Font Window Frame Canvas FontMetrics TextComponent ScrollPane TextField Object Color List Dialog TextArea Choice Graphics FileDialog Checkbox Component Label Scrollbar LayoutManager CSE S. Tanimoto Java Abstract Windowing Toolkit

12 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
User Events ActionEvent ContainerEvent AdjustmentEvent FocusEvent MouseEvent EventObject AWTEvent ComponentEvent InputEvent KeyEvent ItemEvent PaintEvent TextEvent WindowEvent CSE S. Tanimoto Java Abstract Windowing Toolkit

13 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
Graphics Contexts void paint (Graphics g) { int x=100; int y=50; int w=100; int h=50; int x2=300; int y2=150; g.drawString("Hello", x, y); // Draws text g.setFont(new Font("Helvetica", Font.BOLD 20)); g.drawString("Hello again", x, y2); g.setColor(Color.red); g.drawLine(x1, y1, x2, y2); g.drawRect(x, y, w, h); g.fillRect(x, y, w, h); g.drawOval(x, y, w, h); } CSE S. Tanimoto Java Abstract Windowing Toolkit

14 CSE 341 -- S. Tanimoto Java Abstract Windowing Toolkit
Handling Mouse Events 1. Either define a class that implements one or both of the interfaces MouseListener or MouseMotionListener, or 2. Define a class that subclasses MouseAdapter (and, maybe which implements MouseMotionListener), or 3. Declare that your main class implements MouseListener and/or MouseMotionListener. Then, if you have implemented a new class for handling the mouse, then create an instance of it and call one or both of addMouseListener and/or addMouseMotionListener Otherwise call addMouseListener and/or addMouseMotionListener with this. CSE S. Tanimoto Java Abstract Windowing Toolkit

15 Example: LineSegments with Movable Endpoints
Let’s add interactivity to the LineSegmentCollection applet. The user can click on the endpoint of any segment. The user can drag the mouse and move the endpoint. Any intersections with other line segments are updated, too. (Note, this version leaves copies of some intersections until the other line is moved, too.) CSE S. Tanimoto Java Abstract Windowing Toolkit

16 Handling Mouse Events (cont)
class MyMouseHandler extends MouseAdapter implements MouseMotionListener { public void mousePressed (MouseEvent e) { for (Enumeration theEnum = theSegments.elements(); theEnum.hasMoreElements();) { selectedLS = (LineSegmentD)theEnum.nextElement(); selectedPoint = selectedLS.getHit(e.getX(), e.getY()); if (selectedPoint != null) break; selectedLS = null; } CSE S. Tanimoto Java Abstract Windowing Toolkit

17 Handling Mouse Events (cont)
public void mouseReleased (MouseEvent e) { selectedPoint = null; } public void mouseDragged (MouseEvent e) { if (selectedPoint != null) { selectedLS.updateLocation( selectedPoint, e.getX(), e.getY() ); repaint(); public void mouseMoved (MouseEvent e) {} CSE S. Tanimoto Java Abstract Windowing Toolkit

18 Handling Mouse Events (cont)
public class LineSegmentCollectionD extends Applet { Vector theSegments; LSPointD selectedPoint = null; LineSegmentD selectedLS = null; public void init() { MyMouseHandler mmh = new MyMouseHandler(); addMouseListener(mmh); addMouseMotionListener(mmh); theSegments = new Vector(); for (int i = 0; i < 10; i++) { theSegments.addElement(new LineSegmentD(i,this)); } CSE S. Tanimoto Java Abstract Windowing Toolkit


Download ppt "A Brief Overview of the Abstract Windowing Toolkit (AWT)"

Similar presentations


Ads by Google