0% found this document useful (0 votes)
57 views21 pages

Java Swing: Chris North cs3724: HCI

This document provides an overview of Java Swing and GUI programming in Java. It discusses the differences between AWT and Swing, how to create GUI components like buttons and add them to containers like panels and frames. It also covers layout managers, building application and applet GUIs, and some key methods for applets. The document gives examples of creating simple Swing-based
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views21 pages

Java Swing: Chris North cs3724: HCI

This document provides an overview of Java Swing and GUI programming in Java. It discusses the differences between AWT and Swing, how to create GUI components like buttons and add them to containers like panels and frames. It also covers layout managers, building application and applet GUIs, and some key methods for applets. The document gives examples of creating simple Swing-based
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 21

Java Swing

Chris North
cs3724: HCI

AWT to Swing
AWT: Abstract Windowing Toolkit
import java.awt.*

Swing: new with Java2

import javax.swing.*
Extends AWT
Tons o new improved components
Standard dialog boxes, tooltips,
Look-and-feel, skins
Event listeners

API:
http://java.sun.com/j2se/1.3/docs/api/index.html

Swing Set Demo


J2sdk/demo/jfc/SwingSet2

Many predefined
GUI components

GUI Component API


Java: GUI component = class
Properties

Methods

Events

JButton

Using a GUI Component


1. Create it

Instantiate object: b = new JButton(press me);

2. Configure it

Properties: b.text = press me;


Methods:
b.setText(press me);

[avoided in java]

3. Add it

panel.add(b);

4. Listen to it

Events: Listeners

JButton

Anatomy of an Application GUI


GUI

Internal structure
JFrame

JFrame
JPanel

containers
JPanel
JButton
JButton
JLabel

JLabel

Using a GUI Component 2


1.
2.
3.
4.
5.

Create it
Configure it
Add children (if container)
Add to parent (if not JFrame)
Listen to it

order
important

Build from bottom up


Create:

Frame
Panel
Components
Listeners

Add: (bottom up)

Listener
JLabel

JButton

JPanel

listeners into components


components into panel
panel into frame
JFrame

Code
JFrame f = new JFrame(title);
JPanel p = new JPanel( );
JButton b = new JButton(press me);
p.add(b);
f.setContentPane(p);

// add button to panel


// add panel to frame

f.show();
press me

Application Code
import javax.swing.*;
class hello {
public static void main(String[] args){
JFrame f = new JFrame(title);
JPanel p = new JPanel();
JButton b = new JButton(press me);
p.add(b);
f.setContentPane(p);
f.show();
}
}

// add button to panel


// add panel to frame

press me

Layout Managers
Automatically control placement of components
in a panel
Why?

Layout Manager Heuristics


null

FlowLayout

none,
programmer
sets x,y,w,h

Left to right,
Top to bottom

BorderLayout
n
w

c
s

CardLayout

One at a time

GridLayout

GridBagLayout

JButton

Combinations
JButton JButton

JTextArea

Combinations
JButton

JButton

JFrame
n

JPanel: FlowLayout

JPanel: BorderLayout
c
JTextArea

Code: null layout


JFrame f = new JFrame(title);
JPanel p = new JPanel( );
JButton b = new JButton(press me);
b.setBounds(new Rectangle(10,10, 100,50));
p.setLayout(null);
// x,y layout
p.add(b);
f.setContentPane(p);
press me

Code: FlowLayout
JFrame f =
JPanel p =
FlowLayout
JButton b1
JButton b2

new JFrame(title);
new JPanel( );
L = new FlowLayout( );
= new JButton(press me);
= new JButton(then me);

p.setLayout(L);
p.add(b1);
p.add(b2);
f.setContentPane(p);
Set layout mgr before adding components

press me then me

Applets
JApplet is like a JFrame
Already has a panel
Access panel with JApplet.getContentPane( )

JApplet

contentPane

import javax.swing.*;
JButton
class hello extends JApplet {
public void init(){
JButton b = new JButton(press me);
getContentPane().add(b);
}
}

Applet Methods
Called by browser:

init( ) - initialization
start( ) - resume processing (e.g. animations)
stop( ) - pause
destroy( )
- cleanup
paint( ) - redraw stuff (expose event)

Application + Applet
import javax.swing.*;
class helloApp {
public static void main(String[] args){
// create Frame and put my mainPanel in it
JFrame f = new JFrame(title);
mainPanel p = new mainPanel();
f.setContentPane(p);
f.show();
}
}
class helloApplet extends JApplet {
public void init(){
// put my mainPanel in the Applet
mainPanel p = new mainPanel();
getContentPane().add(p);
}
}
// my main GUI is in here:
class mainPanel extends JPanel {
mainPanel(){
setLayout(new FlowLayout());
JButton b = new JButton(press me);
add(b);
}
}

Command line

Browser

JFrame

JApplet

or

contentPane

JPanel
JButton

Applet Security

No read/write on client machine


Cant execute programs on client machine
Communicate only with server
Java applet window Warning

In JBuilder

You might also like