Transcript Editors

PROGRAMMING
REVIEW
Lab 2
EECS 448
Dr Fengjun Li and Meenakshi Mishra
Software Development
• Science or Art?
• Science
• Parts of it have fixed objective which must be met
• Building new technology to help mankind
• Art
• Most clients just give a rough idea what they want
• The final product is result of programmer’s imaginations
• The more you practice, the better you get at it
• There are basic techniques that can be taught; other than that you are
on your own
Task for Today
• Build a java application for a basic calculator
• The user selects the basic operations from drop-down menu
• The options should be addition, subtraction, multiplication, devision
• The user enters the numbers in two text fields provided
• The result appears in third text field
A tip that always helps
• Approach the problem in small steps
• Breaking the problem down in steps helps debugging
• For example in this case
• First write an application just to launch the application window
• Change your program to include the textfields and labels
• Write a code to just do addition
• Plug in the drop-down menu and adjust the program accordingly
Working with swing
• A package written for developing sophisticated GUI
• Adopts style of the operating system or style unique to Java
• Each style is called look and feel
• Java 7 introduces new look and feel called Nimbus, that is unique to
Java
• Must avail the swing package first
• import javax.swing.*;
• Other packages supporting GUI programming
• java.awt (Abstract Windowing Toolkit)
• java.awt.event (class handling user input)
• Swing generally more powerful than awt
• Not implemented by platform specific code, but written entirely in java
• Supplies plenty of exciting additions like scroll panes, trees, tables etc
• When using Swing component, you work with object of that Swing
class
• All Swing components are subclasses of abstract class JComponent
Creating Interface
• Create a class that represents the main GUI
• In most projects, main interface is a frame (JFrame class)
• Frame is a window that appears whenever you open an application
• Frame has a title bar, Maximize, Minimize, Close buttons and other features
• Users of graphical environments expect to move, resize and close the windows
• To create a graphical Java application, make the interface a subclass of
JFrame
• public class MyFirstGui extends Jframe
• Set title by either setTitle(String) or super(String) in the constructor
• Set size by setSize(int, int) where first number denotes width and
second height in pixels
• Make your frame visible by setVisible(true);
• Set default close operation to exit on closing
setDefaultCloseOption(EXIT_ON_CLOSE)
• Other close options
• DISPOSE_ON_CLOSE
• HIDE_ON_CLOSE
• DO_NOTHING_ON CLOSE
Adding Components
• Class JButton
• Three constructors
• JButton(String)  Label on the button
• JButton(Icon)  Icon on the button
• JButton(String,Icon)  Both icon and Label on the button
• JButton b = new JButton(“OK”);
• Class JPanel
• After creating components, need to add them to a container
• Simplest container
• JPanel p = new JPanel();
• p.add(b);
//add button b to panel p
Adding Components
• Class JTextField
• JTextField()  Empty Text field
• JTextField(int)  Text Field with specified width
• JTextField(String, int)  Text Field with specified width and
text
• setEditable(False) for text fields that do not accept user input
• Class JLabel
• Three Constructors
• JLabel(String)  Label with specified text
• JLabel(String, int)  Label with specified text and alignment
• SwingConstants.LEFT
• SwingConstants.RIGHT
• SwingConstants.CENTER
• JLabel(String, Icon, int)  Label with specified text, icon and
alignment
Adding Components
• Class JComboBox
• Creates a list of items that are hidden when menu is not being used
• addItem(Object)  Add item to the list
• getItemAt(int)  Returns the text of the list item at specified
index position
• getSelectedIndex()  Returns the index position of selected
item
• getSelectedItem()  Returns the text of currently selected item
• setSelectedIndex(int)  Selects the item at indicated index
position
• setSelectedIndex(object)  Selects specified object in the list
Responding to User Inputs
• Use java.awt.event package
• Useful listener interfaces
• ActionListener  When user performs an action on a component.
• AdjustmentListener  When component is adjusted
• FocusListener  Textfield or area loses or gains focus
• ItemListener  When items in items such as combo box are
changed
• KeyListener  When user enters text using keyboard
• MouseListener  Generated by mouse clicks, mouse entering or
leaving a component area
• MouseMotionListener  track all movement by mouse over
component
• WindowListener  When window is minimized, maximized, moved or
closes
• Implement listener in class definition
• public class t extends JFrame implements ActionListener,
ItemListener { //…}
Setting up Components
• Need to add the attribute of listening to specific objects
• addActionListener()  JButton, JCheckBox, JComboBox,
JTextField, JRadioButton and JMenuItem
• addFocusListener()  all Swing Component
• addItemListener()  JButton, JCheckBox, JComboBox and
JRadioButton
• addKeyListener()  all Swing Components
• addMouseListener()  all Swing Components
• addMouseMotionListener()  all Swing Components
• addTextListener()  JTextField and JTextArea
• addWindowListener()  JWindow and JFrame
• JButton b = new JButton(‘OK”);
• b.addActionListener();
Event Handling Methods
• Action Events
• ActionListener  actionPerformed(ActionEvent)
• Focus Events
• FocustListener  focusGained(FocusEvent) and
focusLost(FocusEvent)
• Item Events
• ItemListener  itemStateChanged(ItemEvent)
• When a class implements an event interface, must define the
corresponding event handling methods
• public void actionPerformed(ActionEvent e) { //..}
• To know which for which object the event was generated
• Object source=e.getSource();
• If the event was triggered by button b, you can check using
if (source==b) { //..}
Summary of designing application
• Import packages
• Create a Class that extends JFrame and implements all
the user interfaces required
• Make sure to set the frame to visible, set title, declare size, the
•
•
•
•
application exits on closing
Create the components
Add property of user input listening to the components
Add the components to a simple container (optional)
Add the container to the Frame
• Define what to do when the user enters required input
• Define event handling methods