0% found this document useful (0 votes)
36 views

Java Swing: Chris North cs3724: HCI

This document discusses Java Swing, which is a GUI widget toolkit for Java. It extends the Abstract Window Toolkit (AWT) and provides many new and improved components. It also supports look-and-feel customization and event listeners. The document explains how to create GUI components, configure their properties and methods, add them to containers, and listen for events. It provides examples of building a GUI with components like buttons and labels using different layout managers. Applets are also discussed as a way to deploy Swing GUIs in a web browser.

Uploaded by

fahimi_ahlam
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Java Swing: Chris North cs3724: HCI

This document discusses Java Swing, which is a GUI widget toolkit for Java. It extends the Abstract Window Toolkit (AWT) and provides many new and improved components. It also supports look-and-feel customization and event listeners. The document explains how to create GUI components, configure their properties and methods, add them to containers, and listen for events. It provides examples of building a GUI with components like buttons and labels using different layout managers. Applets are also discussed as a way to deploy Swing GUIs in a web browser.

Uploaded by

fahimi_ahlam
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, 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

JButton
• Methods

• Events

Using a GUI Component
1. Create it
• Instantiate object: b = new JButton(“press me”);
2. Configure it
• Properties: b.text = “press me”; [avoided in java]
• Methods: b.setText(“press me”);
3. Add it
• panel.add(b);
4. Listen to it JButton
• Events: Listeners
Anatomy of an Application GUI
GUI Internal structure

JFrame JFrame
JPanel containers

JPanel
JButton

JButton JLabel
JLabel
Using a GUI Component 2
1. Create it
2. Configure it order
3. Add children (if container) important
4. Add to parent (if not JFrame)
5. Listen to it
Build from bottom up
• Create: Listener
• Frame
• Panel
JLabel JButton
• Components
• Listeners
• Add: (bottom up)
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); // add button to panel


f.setContentPane(p); // 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); // add button to panel


f.setContentPane(p); // add panel to frame

f.show();
} press me
}
Layout Managers
• Automatically control placement of components
in a panel
• Why?

Layout Manager Heuristics
null FlowLayout GridLayout

none,
Left to right,
programmer
Top to bottom
sets x,y,w,h

BorderLayout CardLayout GridBagLayout


n

w c e One at a time JButton

s
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 = new JFrame(“title”);
JPanel p = new JPanel( );
FlowLayout L = new FlowLayout( );
JButton b1 = new JButton(“press me”);
JButton b2 = new JButton(“then me”);

p.setLayout(L);
p.add(b1);
p.add(b2); press me then me
f.setContentPane(p);

Set layout mgr before adding components


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

import javax.swing.*;

class hello extends JApplet { JButton


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 { Command line Browser


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();
} JFrame or JApplet
}

class helloApplet extends JApplet {


public void init(){
// put my mainPanel in the Applet
contentPane
mainPanel p = new mainPanel();
getContentPane().add(p);
}
}

// my main GUI is in here:


class mainPanel extends JPanel {
mainPanel(){ JPanel
setLayout(new FlowLayout());
JButton b = new JButton(“press me”);
add(b);
}
}
JButton
Applet Security
• No read/write on client machine
• Can’t execute programs on client machine
• Communicate only with server
• “Java applet window” Warning
In JBuilder

You might also like