Java Swing
Java Swing
Java Swing
AWT to Swing
AWT: Abstract Windowing Toolkit
import java.awt.*
API:
http://java.sun.com/j2se/1.3/docs/api/index.html
Methods
JButton
Events
2. Configure it
3. Add it
4. Listen to it
Events: Listeners
JButton
JFrame JPanel
JFrame
containers
JPanel
JButton
JButton
JLabel
JLabel
order important
JButton
JPanel
JFrame
Code
JFrame f = new JFrame(title); JPanel p = new JPanel( ); JButton b = new JButton(press me); p.add(b); f.setContentPane(p); f.show(); press me // add button to panel // add panel to frame
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?
BorderLayout n w c s e
CardLayout
GridBagLayout
One at a time
JButton
Combinations
JButton JButton
JTextArea
Combinations
JButton JFrame n JPanel: FlowLayout JButton
JPanel: BorderLayout
c JTextArea
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
or
JApplet
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