13
PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

Embed Size (px)

Citation preview

Page 1: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

PROGRAMMING REVIEWLab 2

EECS 448

Dr Fengjun Li and Meenakshi Mishra

Page 2: 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

Page 3: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 4: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 5: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 6: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 7: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 8: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 9: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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

Page 10: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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 { //…}

Page 11: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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();

Page 12: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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) { //..}

Page 13: PROGRAMMING REVIEW Lab 2 EECS 448 Dr Fengjun Li and Meenakshi Mishra

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