Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson...
-
Upload
marsha-curtis -
Category
Documents
-
view
232 -
download
2
Transcript of Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson...
![Page 1: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/1.jpg)
Introduction to GUI Programming with Java
Graphical User Interfaces With AWT and Swing
Towson University 2013.
*Ref: http://chortle.ccsu.edu/java5/index.html
![Page 2: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/2.jpg)
Graphical User Interface
![Page 3: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/3.jpg)
3
- Users interact with application programs using graphical components such as buttons, text boxes, and menus as well as console.
- Hard to write a GUI application, but most of functions are provided by a set of classes called Swing
• Swing– A large package– Composed of graphical components:
•Windows•Buttons•Menus•Text fields
– Built on the fundamental classes of the Abstract Windowing Toolkit (AWT)
– Come with recent Java releases
GUI
![Page 4: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/4.jpg)
4
- Users controls the application by interacting with the graphical components, generating events.
• GUI Events– Mouse clicking on a button– Making a choice from a menu– Entering text in a text box– Dragging a scroll bar
• Event-driven programming– Users cause events on the GUI components and the
program responds to these events.– Programming by organizing the GUI components
contained in the Swing package.
Events
![Page 5: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/5.jpg)
5
●GUI Program– Graphical Components: Swing objects or extended one– Listener methods: Java methods the interface GUI
components with the application tasks by calling application methods
– Application methods: Java methods performing specific functional tasks
GUI Program
![Page 6: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/6.jpg)
GUI Component
![Page 7: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/7.jpg)
7
Container Classes
●Window– A fundamental container – Includes other GUI components– Ex) Browser is a window (container) containing buttons,
menus, slides, icons, and other GUI components.
• Container– A container can contain another container.– Ex) Main window contains frames which contain other
components.
![Page 8: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/8.jpg)
8
Java Classes
●AWT and Swing – Inherited from Java Object class
• AWT– Contains the fundamental classes used for constructing
GUIs.– Component class is defined as the base abstract class.– AWT classes: Button, Canvas, and Container inherited
from Component class
• Swing classes– Swing JComponent(derived rom AWT Container class)
•one of the base class of Swing
– Swing JFrame(from AWT Frame class)•Usually the main container for a GUI application
![Page 9: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/9.jpg)
9
Swing component hierarchy
• Graphical components in Java form an inheritance hierarchy:
java.lang.Object +--java.awt.Component +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.JButton | +--javax.swing.JLabel | +--javax.swing.JMenuBar | +--javax.swing.JOptionPane | +--javax.swing.JPanel | +--javax.swing.JTextArea | +--javax.swing.JTextField | +--java.awt.Window +--java.awt.Frame +--javax.swing.JFrame
• When doing GUI programming, always import these packages:import java.awt.*;import javax.swing.*;
![Page 10: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/10.jpg)
10Java Programming: Program Design Including Data Structures 10
Inheritance Hierarchy
![Page 11: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/11.jpg)
11
Java GUI: AWT and Swing
• Sun's initial idea: create a set of classes/methods that can be used to write a multi-platform GUI (Abstract Windowing Toolkit, or AWT)– problem: not powerful enough; limited; a bit clunky to use
• Second edition (JDK v1.2): Swing– a newer library written from the ground up that allows
much more powerful graphics and GUI construction
• Drawback: Both exist in Java now; easy to get them mixed up; still have to use both sometimes!
![Page 12: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/12.jpg)
12
JComponent Classes
●Container family – Can contain components– Can be placed inside containers– Can be displayed on the monitor– Can generate events– Can register event listeners
• Swing classes– All Swing classes are descendants of Container class.– In addition to JComponent, JLabel, JPanel, JSlider, JTextComponent, JButton, …
![Page 13: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/13.jpg)
13
JFrame class
●JFrame – Represents the window of a GUI application program– Can hold the components and methods of your
application
• Methods– setSize()– setBounds()– setVisible()– setDefaultCloseOperation()
●Frame in Java – A window containing borders, buttons, and other features.
![Page 14: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/14.jpg)
14
JFrame example 1
• A simple program that creates and shows a JFrame:
import javax.swing.*;
public class SimpleFrame { public static void main(String[] args) { JFrame frame = new JFrame(“SimpleFrame”);
frame.setSize(300,200); frame.setVisible(true); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); }}
• Graphical output:
![Page 15: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/15.jpg)
15
JFrame example 2
import java.awt.*;import javax.swing.*;
public class SimpleFrame2 { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setForeground(Color.WHITE); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(new Point(100, 50)); frame.setSize(new Dimension(300, 120)); frame.setTitle("A frame"); frame.setVisible(true); }}
• Graphical output:
![Page 16: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/16.jpg)
16
A frame is a graphical window that can be used to hold other components
• public JFrame()public JFrame(String title)Creates a frame with an optional title.
• public void setTitle(String text)Puts the given text in the frame’s title bar.
• public void setDefaultCloseOperation(int op)Makes the frame perform the given action when it closes. Common value: JFrame.EXIT_ON_CLOSE
• public void add(Component comp)Places the given component or container inside the frame.– How would we add more than one component to the frame?
• NOTE: Call setVisible(true) to make a frame appear on screen after creating it.
JFrame
![Page 17: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/17.jpg)
17
JButton class
●JButton – Inherited from AbstractButton which is inherited from JComponent
– Can contain other components– ButtonFrame and ButtonDemo
![Page 18: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/18.jpg)
18
Components example• This program attempts to show 2 buttons:
import java.awt.*;import javax.swing.*;
public class ComponentsExample1 { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(300, 100)); frame.setTitle("A frame");
JButton button1 = new JButton(); button1.setText("I'm a button."); button1.setBackground(Color.BLUE); frame.add(button1);
JButton button2 = new JButton(); button2.setText("Click me!"); button2.setBackground(Color.RED); frame.add(button2);
frame.setVisible(true); }}
![Page 19: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/19.jpg)
19
Changing layouts
• We can correct the program's appearance by changing the frame's layout manager .
• Change the layout by calling the setLayout method on the frame and passing a layout manager object.– We will see several layout managers later.– We'll use one called a FlowLayout, which sizes each
component to its preferred size and positions them in left-to-right rows.
– If the following line is added to the preceding program just before calling setVisible(true), its appearance will be:
frame.setLayout(new FlowLayout());
![Page 20: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/20.jpg)
Action events withActionListener
![Page 21: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/21.jpg)
21
Event-driven programming
• program's execution is indeterminate
• on-screen components cause events to occur when they are clicked / interacted with
• events can be handled, causing the program to respond, driving the execution thru events (an "event-driven" program)
![Page 22: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/22.jpg)
22
Java Event Hierarchyjava.lang.Object
+--java.util.EventObject
+--java.awt.AWTEvent
+--java.awt.event.ActionEvent
+--java.awt.event.TextEvent
+--java.awt.event.ComponentEvent
+--java.awt.event.FocusEvent
+--java.awt.event.WindowEvent
+--java.awt.event.InputEvent
+--java.awt.event.KeyEvent
+--java.awt.event.MouseEvent
•import java.awt.event.*;
![Page 23: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/23.jpg)
23
Action events: ActionEvent• most common / simple event type in Swing• represent an action occurring on a GUI component
• created by:– button clicks– check box checking / unchecking– menu clicks– pressing Enter in a text field– etc.
![Page 24: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/24.jpg)
24
Listening for events• attach a listener to the component
• listener’s appropriate method will be called when event occurs (e.g. when the button is clicked)
• for Action events, use ActionListener
• ActionListeners are event handlers to define what should be done when an user performs certain operation.
![Page 25: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/25.jpg)
25
Writing Action Listener
• Declare an event handler class by specifying that the class either implements an ActionListener interface or extends a class that implements an ActionListener interface.
public class MyHandler implements ActionListener {
…
}
• Register an instance of the event handler class as a listener on one or more components
someComponent.addActionListener(instanceOfMyHandler);
• ActionListener interface is special, enforcing the inclusion of the method, actionPerformed().
Public void actionPerformed(ActionEvent e) {
…
}
![Page 26: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/26.jpg)
26
Writing an ActionListener// part of Java; you don't write this
public interface ActionListener {
public void actionPerformed(ActionEvent event);
}
// Prints a message when the button is clicked.
public class MyActionHandler
implements ActionListener {
public void actionPerformed(ActionEvent event){
JButton.showMessageDialog(null,
"An event occurred!");
}
}
![Page 27: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/27.jpg)
27
Attaching an ActionListener
import java.awt.*;
import java.awt.event.*;
public class MyAH extends Frame implements WindowListener,ActionListener {
TextField text = new TextField(20);
Button b;
private int numClicks = 0;
public static void main(String[] args) {
MyAH myWindow = new MyAH("My first window");
myWindow.setSize(350,100);
myWindow.setVisible(true);
}
public MyAH(String title) {
super(title);
setLayout(new FlowLayout());
addWindowListener(this);
b = new Button("Click me");
add(b);
add(text);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
numClicks++;
text.setText("Button Clicked " + numClicks + " times");
}
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
...
} // end of class MyAH
![Page 28: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/28.jpg)
28
Text Field Example
• Capturing user input from a text field
public void actionPerformed(ActionEvent e) {
String textFieldValue = text.getText();
text.setText(textFieldValue + " PASSED.....");
}
![Page 29: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/29.jpg)
29
JTextField methods
• getText()• setText()
![Page 30: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/30.jpg)
30
import java.awt.*;import java.awt.event.*;import javax.swing.JTextField;import javax.swing.JTextArea;import javax.swing.JButton;import javax.swing.JLabel;
public class MyAH extends Frame implements WindowListener,ActionListener { JTextField text = new JTextField(20); JLabel label1 = new JLabel("AWT Button Example"); Button b; private int numClicks = 0; JLabel label2 = new JLabel("Please type numeric expression"); JTextField input = new JTextField(20); JButton bSubmit; //ButtonFrame frm = new ButtonFrame("Button Demo"); JTextArea output = new JTextArea(20, 20);
public static void main(String[] args) { MyAH myWindow = new MyAH("My first window"); myWindow.setSize(350,250); myWindow.setLayout(new FlowLayout()); myWindow.setVisible(true); }
![Page 31: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/31.jpg)
31
public MyAH(String title) {
super(title); setLayout(new FlowLayout()); addWindowListener(this); b = new Button("Click Me!"); bSubmit = new JButton("Submit"); // construct a JButton add(label1); add(b); add(text); add(label2); add(input); add(bSubmit); //input.setText("Type numeric expression. "); add(output); b.addActionListener(this); MyActionHandler calcHandler = new MyActionHandler(); bSubmit.addActionListener(calcHandler); }
![Page 32: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/32.jpg)
32
public void actionPerformed(ActionEvent e) { numClicks++; String textFieldValue = text.getText(); text.setText("Button has been pressed " + numClicks + " times."); /* String inputTextFieldValue = inputTextFieldValue = input.getText(); Double outputValue = calculate(inputTextFieldValue); input.setText(inputTextFieldValue); //output.setText("Result equals" + i*100); output.setText("Result equals " + inputTextFieldValue);
//output.setText("Result equals" + outputValue);*/ }
public double calculate(String exp) { return 100; } public void windowClosing(WindowEvent e) { dispose(); System.exit(0); }
![Page 33: Introduction to GUI Programming with Java Graphical User Interfaces With AWT and Swing Towson University 2013. *Ref: .](https://reader035.fdocuments.in/reader035/viewer/2022062314/56649f325503460f94c4d8db/html5/thumbnails/33.jpg)
33
public void windowOpened(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void windowClosed(WindowEvent e) {}
public class MyActionHandler implements ActionListener {
public void actionPerformed(ActionEvent e) { String inputTextFieldValue = input.getText(); Double outputValue = calculate(inputTextFieldValue); input.setText(inputTextFieldValue); output.setText("Result equals " + inputTextFieldValue); }
} // end of class MyActionHandler } // end of class MyAH