Java Lecture 5
[Previous Lecture]
[Lecture Index]
[Next Lecture]
Java Graphical User Interfaces
Java's GUI packages:
-
java.awt -
Classes dealing with visual appearance (buttons, lines,
placement, etc.)
-
java.awt.event -
Classes for events: `messages' between user interface components
-
java.awt.datatransfer -
Classes dealing with cut and paste operations
-
java.awt.image -
Classes dealing with image manipulation
Two types of programs use java.awt:
-
applications: normal program (has main(), etc.)
with a GUI.
-
applets: special: special program, typically runs within a browser.
Uses java.applet package.
Both types use event driven programming model.
HelloApplet.java
import java.applet.Applet;
import java.awt.Graphics;
public class HelloApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello, World!", 50, 25);
}
}
HelloApplet.html
<html>
<head>
<title>HelloApplet Applet tester</title>
</head>
<body>
A test applet:
<applet code=HelloApplet width=200 height=200>
If you see this, you do not have a
browser that knows about java...
</applet>
</body>
</html>
Introduction to Applets
LineDraw1.java
/*
* <applet code=LineDraw1 width=200 height=200>
* </applet>
*/
import java.awt.*;
import java.awt.event.*;
public class LineDraw1
extends java.applet.Applet
implements MouseListener
{
private int nPoints = 0;
private int x1, y1;
private int x2, y2;
public void init() {
addMouseListener(this);
}
public void paint(Graphics g) {
if (nPoints == 1)
g.fillRect(x1 - 1, y1 - 1, 3, 3);
else if (nPoints == 2)
g.drawLine(x1, y1, x2, y2);
}
public void mouseClicked(MouseEvent me) {
if (nPoints != 1) {
nPoints = 1;
x1 = me.getX();
y1 = me.getY();
} else {
nPoints++;
x2 = me.getX();
y2 = me.getY();
}
repaint();
}
public void mouseEntered(MouseEvent me) { }
public void mouseExited(MouseEvent me) { }
public void mousePressed(MouseEvent me) { }
public void mouseReleased(MouseEvent me) { }
}
LineDraw2.java
/*
* <applet code=LineDraw2 width=200 height=200>
* </applet>
*/
import java.awt.*;
import java.awt.event.*;
public class LineDraw2
extends java.applet.Applet
{
private int nPoints = 0;
private int x1, y1;
private int x2, y2;
public void paint(Graphics g) {
if (nPoints == 1)
g.fillRect(x1 - 1, y1 - 1, 3, 3);
else if (nPoints == 2)
g.drawLine(x1, y1, x2, y2);
}
public void mouseClicked(MouseEvent me) {
if (nPoints != 1) {
nPoints = 1;
x1 = me.getX();
y1 = me.getY();
} else {
nPoints++;
x2 = me.getX();
y2 = me.getY();
}
repaint();
}
}
class HelperClass extends MouseAdapter
{
HelperClass(LineDraw2 parent) {
this.parent = parent;
parent.addMouseListener(this);
}
public void mouseClicked(MouseEvent me) {
parent.mouseClicked(me);
}
private LineDraw2 parent;
}
LineDraw3.java
/*
* <applet code=LineDraw3 width=200 height=200>
* </applet>
*/
import java.awt.*;
import java.awt.event.*;
public class LineDraw3
extends java.applet.Applet
{
private int nPoints = 0;
private int x1, y1;
private int x2, y2;
public void init() {
addMouseListener(
new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
if (nPoints != 1) {
nPoints = 1;
x1 = me.getX();
y1 = me.getY();
} else {
nPoints++;
x2 = me.getX();
y2 = me.getY();
}
repaint();
}
}
);
}
public void paint(Graphics g) {
if (nPoints == 1)
g.fillRect(x1 - 1, y1 - 1, 3, 3);
else if (nPoints == 2)
g.drawLine(x1, y1, x2, y2);
}
}
Intro to AWT Events
General Event Design Pattern
-
XXXEvent: a class containing information about XXX events
-
XXXListener: an interface used by classes wanting to
receive XXX event
-
XXXAdapter: a class implementing XXXListener
-
makes it easy to define only desired method
-
typically used in anonymous inner classes
-
components that generate XXX events have the methods:
-
addXXXListener(XXXListener)
-
removeXXXListener(XXXListener)
Commonly Used Listeners/Adapters:
-
ActionListener: generated by components (buttons, menues, etc.)
-
MouseListener: generated by mouse clicks, presses,
releases, enters and exits
-
MouseMotionListener: generated by mouse moves and drags
-
KeyListener: generated by key presses and releases
-
ComponentListener: generated by component resizes,
moves, hides, and shows
AWT Elements
- basic drawing: java.awt.Graphics class
- composing screens: java.awt
Screens created using:
- Component - individual items that make up interface:
Canvas, Label, Button, Choice, Checkbox,
List, Scrollbar, TextArea, TextField
- Container - collections of components:
Panel, Applet, Window, Frame, Dialog
- layout managers - organize components in containers:
FlowLayout, BorderLayout, GridLayout,
CardLayout, GridBagLayout
- presenting images: java.awt.image class
ButtonTest.java
/*
* <applet code=ButtonTest width=200 height=200>
* </applet>
*/
import java.awt.*;
import java.awt.event.*;
public class ButtonTest
extends java.applet.Applet
implements ActionListener
{
Button aButton;
Button bButton;
public void init() {
aButton = new Button("First button");
bButton = new Button("B");
add(aButton);
add(bButton);
aButton.addActionListener(this);
bButton.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == aButton)
System.out.println("First pressed");
else if (ae.getSource() == bButton)
System.out.println("B pressed");
}
}
[Previous Lecture]
[Lecture Index]
[Next Lecture]