more about guiswilliams.comp.ncat.edu › comp163 › gui2.pdf · extends javax.swing.jframe...
TRANSCRIPT
![Page 1: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/1.jpg)
More AboutGUIs
COMP163 Introduction toComputer Programming
![Page 2: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/2.jpg)
“An ounce of practice is worth
more than tons of preaching.”
Mahatma Gandhi
![Page 3: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/3.jpg)
Quiz
• There will be a quiz in the COMP163 recitation this week
• The quiz will cover all the material since the beginning of the semester
• The questions will be
– Complete a program
– Show what a program displays
• There is a sample quiz on Blackboard under course materials
![Page 4: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/4.jpg)
Exam
The first exam in COMP163 will be on
Monday, September 23, 2019
![Page 5: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/5.jpg)
Inherited Consistency
• Because many of the capabilities of a GUI object come from parent classes, you use the same methods to specify these capabilities for all objects
• An object of the class JButton or JTextField or any of the other GUI classes is also a member of the JComponent class
• Methods to set the color, font, size, position and many other properties are common for all components
![Page 6: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/6.jpg)
Making a GUI
1. Create a class to extend JFrame
2. Create component objects
3. Specify the layout manager
4. Add the component objects to the container
5. Make the GUI visible and stoppable
6. Specify which objects respond to user input
![Page 7: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/7.jpg)
Extending JFrame
• You can create a GUI by extending javax.swing.JFrame
• The class JFrame provides the “frame” where the GUI will be located
public class MyGUI extends
javax.swing.JFrame {
}
![Page 8: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/8.jpg)
Initializing
• GUIs should have a constructor method
public MyGUI(){
// GUI initialization
}
• Your main method calls the constructor
public static void main(String[] rat){
MyGUI frog = new MyGUI();
}
![Page 9: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/9.jpg)
Creating a GUI
public class MyGUI extends javax.swing.JFrame {
public MyGUI() {setSize(250, 200);
}
public static void main(String[] rat){
MyGUI frog = new MyGUI();
}}
![Page 10: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/10.jpg)
Setting the Frame Size
• You can specify how big the frame will be with the setSize( xSize, ySize ) method
• The sizes are specified in pixels the same as the graphics methods used
![Page 11: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/11.jpg)
Creating GUI ObjectsAll of the parts of a GUI are Java objects.
• javax.swing.JButton creates buttons
• javax.swing.JLabel creates text
• javax.swing.JTextFieldcreates input boxes
• javax.swing.JCheckBox creates check boxes
• javax.swing.JRadioButton creates radio buttons
• javax.swing.JComboBox creates menu boxes
Button
Label Text field
Check Box
Radio Button
Combo Box
![Page 12: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/12.jpg)
Creating Components
• Most Swing components have a constructor that takes one String parameter specifying the text to be displayed in that component
javax.swing.JButton dog =
new javax.swing.JButton("Go");
javax.swing.JLabel cat =
new javax.swing.JLabel("COMP163");
![Page 13: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/13.jpg)
Components as Instance Variables
• The GUI component variables should be defined in the class and not in the constructor method
• Calls to methods of the components are often put in the constructor method of a GUI class
![Page 14: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/14.jpg)
Creating Components
public class MyGUI extends javax.swing.JFrame {
javax.swing.JButton dog = new javax.swing.JButton( "Go" );
javax.swing.JLabel cat = new javax.swing.JLabel("COMP163");
public MyGUI() {setSize(250, 200);
}
public static void main(String[] rat){
MyGUI frog = new MyGUI();
}}
![Page 15: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/15.jpg)
Content Pane
• A frame has a content pane that holds the visible components of the GUI, like buttons
• Programs need to get the content pane using the getContentPane() method of frame
java.awt.Container goat = getContentPane();
![Page 16: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/16.jpg)
Creating Components
public class MyGUI extends javax.swing.JFrame {
javax.swing.JButton dog = new javax.swing.JButton( "Go" );
javax.swing.JLabel cat = new javax.swing.JLabel("COMP163");
public MyGUI() {setSize(250, 200);
java.awt.Container goat = getContentPane();}
public static void main(String[] rat){
MyGUI frog = new MyGUI();
}}
![Page 17: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/17.jpg)
The size of GUI components is measured in
A. inches
B. millimeters
C. pixels
D. pixies
![Page 18: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/18.jpg)
Putting Them Where You Want Them
• The Layout Manager determines where components will appear in a GUI
• There are several ways to specify position and size
• Some are more portable than others
• Some are more frustrating than others
![Page 19: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/19.jpg)
BoxLayout
• The BoxLayout is relatively simple
• It positions components as “boxes” either top to bottom (Y_AXIS) or left to right (X_AXIS)
• You must create a BoxLayout object
javax.swing.BoxLayout whale = newjavax.swing.BoxLayout(goat,javax.swing.BoxLayout.Y_AXIS);
or
import javax.swing.*;
BoxLayout whale = new BoxLayout(goat, BoxLayout.Y_AXIS);
![Page 20: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/20.jpg)
Specifying the Layout Manager
• You must specify what layout manager your program will use with the setLayout method
• The parameter of the setLayout method is any layout manager object
javax.swing.BoxLayout whale = new javax.swing.BoxLayout(goat,javax.swing.BoxLayout.Y_AXIS);
setLayout( whale );
![Page 21: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/21.jpg)
Adding Layout Managerpublic class MyGUI extends javax.swing.JFrame {
javax.swing.JButton dog = new javax.swing.JButton( "Go" );
javax.swing.JLabel cat = new javax.swing.JLabel("COMP163");
public MyGUI() {
setSize(250, 200);
java.awt.Container goat = getContentPane();
javax.swing.BoxLayout whale = newjavax.swing.BoxLayout(goat,javax.swing.BoxLayout.Y_AXIS);
setLayout( whale );}
public static void main(String[] rat){
MyGUI frog = new MyGUI();
}}
![Page 22: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/22.jpg)
GUI components should be instance variables of the class declared
A. in the main method
B. in the constructor method
C. in the action performed method
D. outside of any method
![Page 23: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/23.jpg)
Adding Components to a GUI
• To make them appear in a frame the components must be added to the content pane
• The add method links a component to a content pane object
goat.add( cat );
goat.add( dog );
• The order in which the components are added determines the order in which they will appear in the GUI
![Page 24: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/24.jpg)
Adding Componentspublic class MyGUI extends javax.swing.JFrame {
javax.swing.JButton dog = new javax.swing.JButton( "Go" );javax.swing.JLabel cat = new javax.swing.JLabel("COMP163");public MyGUI() {
setSize(150, 100);java.awt.Container goat = getContentPane();javax.swing.BoxLayout whale = new
javax.swing.BoxLayout(goat,javax.swing.BoxLayout.Y_AXIS);setLayout( whale );goat.add( cat );goat.add( dog );
}public static void main(String[] rat){
MyGUI frog = new MyGUI();}
}
![Page 25: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/25.jpg)
Making It Start and Stop
• To make your program terminate if you press the red X in the upper right corner, include
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
• Call setVisible(true) to make the frame appear onscreen
![Page 26: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/26.jpg)
The Full GUI Initializationpublic class MyGUI extends javax.swing.JFrame {
javax.swing.JButton dog = new javax.swing.JButton( "Go" );javax.swing.JLabel cat = new javax.swing.JLabel("COMP163");public MyGUI() {
setSize(150, 100);java.awt.Container goat = getContentPane();javax.swing.BoxLayout whale = new
javax.swing.BoxLayout(goat,javax.swing.BoxLayout.Y_AXIS);setLayout( whale );
goat.add( cat );goat.add( dog );setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);setVisible( true );
}public static void main(String[] rat){
MyGUI frog = new MyGUI();}
}
![Page 27: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/27.jpg)
Jar Files
• A jar file is a collection of compiled Java classes
>jar tf BMPfile.jar // display contents of jarMETA-INF/MANIFEST.MF
BMPcomponent.class
BMPfile.class
• The manifest file contains information about the files in the jar
![Page 28: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/28.jpg)
Nothing Happens?
• When you press the button of our example GUI program, nothing happens
• You can specify a method to be called whenever a button is pressed or something is done to a component
![Page 29: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/29.jpg)
Steps to Respond to Actions
To make an GUI respond in user input:
• Implement java.awt.event.ActionListener
• Add an action listener to the component
• Create an actionPerformed method
![Page 30: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/30.jpg)
Implementing Interfaces
• Implementing an interface is similar to extending a class
• Interfaces are an advanced feature to be explained in detail in COMP167
public class MyGUIextends javax.swing.JFrameimplements java.awt.event.ActionListener {
![Page 31: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/31.jpg)
Listeners
• Java has the concept of listeners
• Listener methods will be called when something happens
• There is a MouseListener, KeyListener, FocusListener, CellEditorListener and many more
• An ActionListener calls a method when the user takes some action with a component in the GUI
![Page 32: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/32.jpg)
Adding a Listener
• The method addActionListener should be called on each GUI component that can do something
• Do not call addActionListener on components that do not do anything, like JLabel
javax.swing.JButton kangaroo = newjavax.swing.JButton("Go");
…
kangaroo.addActionListener( this );
![Page 33: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/33.jpg)
Who Does It
• The parameter to the addActionListener method is the name of an object that implements ActionListener and has an actionPerformed method
• If the actionPerformed method is in the same class that calls addActionListener, the usual parameter is this
• this is the name of this object
![Page 34: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/34.jpg)
What Happens
• When a user clicks an object with an ActionListener, Java calls the method
public void actionPerformed(java.awt.event.ActionEvent chicken) {
// do something here
}
• This method should do what the user expects to happen when the button is pressed
![Page 35: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/35.jpg)
GUI Structure
• Class extending JFrame and implementing ActionListener
• GUI component objects defined
• Constructor method
– Initializes the GUI
– Called only once at the beginning
• ActionPerformed method
– Gets input and sets output
– Called each time something is clicked
![Page 36: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/36.jpg)
When a button is pressed, Java calls
A. actionPerformed
B. add
C. actionEventChoice
D. constructor
![Page 37: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/37.jpg)
Changing a Component’s Text
• A useful method is setText It can be used to change the text of any object that has text, such as JButtons, JLabels and JTextfields
javax.swing.JLabel trout =new javax.swing.JLabel("Do something");
trout.setText("Don’t do something");
![Page 38: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/38.jpg)
GUI Output• When a program with a GUI wants to display a
result, it usually puts the value in a JLabel object.
JLabel aardvark = new JLabel();
…
double answer = some equation;
aardvark.setText("The answer is "+answer);
![Page 39: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/39.jpg)
public class MyGUIaction extends javax.swing.JFrame implements
java.awt.event.ActionListener {
javax.swing.JButton dog = new javax.swing.JButton( "Go" );
javax.swing.JLabel cat = new javax.swing.JLabel("COMP163");
int counter = 0;
public MyGUIaction() {
setSize(200, 100);
java.awt.Container goat = getContentPane();
javax.swing.BoxLayout whale = new
javax.swing.BoxLayout(goat,javax.swing.BoxLayout.Y_AXIS);
setLayout( whale );
goat.add( cat );
goat.add( dog );
dog.addActionListener( this );
setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
setVisible( true );
}
public void actionPerformed(java.awt.event.ActionEvent thing) {
counter = counter + 1;
cat.setText("pressed " + counter + " times");
}
public static void main(String[] rat){
MyGUIaction frog = new MyGUIaction();
}
}
![Page 40: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/40.jpg)
Making a GUI
1. Create a class that extends JFrame and implements java.awt.event.ActionListener
2. Create component objects
3. Specify the layout manager
4. Add the component objects to the container
5. Add an action listener to the components that respond to user input
6. Create an actionPerformed method
![Page 41: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/41.jpg)
Change of Thinking
• Input is usually from JTextfield objects
– java.util.Scanner is not used
• Output is usually to JLabel objects
– System.out is not used
![Page 42: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/42.jpg)
GUI Execution
Start in the main method
Create object of the class
Constructor methodInitializes the GUI
ActionPerformed methodDo what the program is supposed to do when you press a button
![Page 43: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/43.jpg)
String and Numbers
• A String can contain any character on the keyboard, including the numbers
String myGrade = "4.0";
double myScore = 4.0;
• You cannot do arithmetic with Strings
• A string containing numerical characters must be converted to a double or an int for use in any calculations
![Page 44: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/44.jpg)
Converting Strings to Numbers
• A String that contains numerical characters can be converted using
String four = "4", deuce = "2.25";
double cow = Double.parseDouble( deuce );
int goat = Integer.parseInt( four );
• These methods will throw an exception if the string does not contain a number
![Page 45: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/45.jpg)
Inputting Numbers
• The getText() method returns a String
• If a number is entered in a JTextField, it will have to be converted to an int or double
JTextField gekko = new JTextField();
// in the actionPerformed method
String dragon = gekko.getText();
double lizard = Double.parseDouble( dragon );
![Page 46: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/46.jpg)
getText and setText
• The getText and setText methods can be called on all of the GUI components
• The actionPerformed method of most programs
– Call getText to get the input
– Calculate a value
– Call setText to display the result in the GUI
![Page 47: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/47.jpg)
Example Numeric Inputimport javax.swing.*;
public class GUImult extends JFrame implements
java.awt.event.ActionListener {
JTextField inAmount = new JTextField();
JLabel answer = new JLabel("Enter a number ");
public GUImult() {
setSize(200, 70);
java.awt.Container pane = getContentPane();
BoxLayout where = new BoxLayout(pane, BoxLayout.X_AXIS);
setLayout( where );
pane.add( answer );
pane.add( inAmount );
inAmount.addActionListener( this );
setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
setVisible( true );
}
public void actionPerformed(java.awt.event.ActionEvent thing) {
String numStr = inAmount.getText();
double amount = Double.parseDouble( numStr );
answer.setText("Twice the number "+amount*2.0+" ");
}
public static void main(String[] cow) {
GUImult horse = new GUImult();
}
![Page 48: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/48.jpg)
Quiz
• There will be a quiz in the COMP163 recitation this week
• The quiz will cover all the material since the beginning of the semester
• The questions will be
– Complete a program
– Show what a program displays
• There is a sample quiz on Blackboard under course materials
![Page 49: More About GUIswilliams.comp.ncat.edu › COMP163 › GUI2.pdf · extends javax.swing.JFrame implements java.awt.event.ActionListener {Listeners •Java has the concept of listeners](https://reader033.vdocuments.net/reader033/viewer/2022042315/5f03cbd67e708231d40ad02d/html5/thumbnails/49.jpg)
Exam
The first exam in COMP163 will be on
Monday, September 23, 2019