Chapter 13 Lab Advanced GUI Applications

Similar documents
Chapter 13 Lab Advanced GUI Applications Lab Objectives. Introduction. Task #1 Creating a Menu with Submenus

Chapter 14. More Swing

Theory Test 3A. University of Cape Town ~ Department of Computer Science. Computer Science 1016S ~ For Official Use

Window Interfaces Using Swing Objects

Window Interfaces Using Swing Objects

import javax.swing.*; import java.awt.*; import java.awt.event.*;

Building Graphical User Interfaces. GUI Principles

Building Graphical User Interfaces. Overview

Queens College, CUNY Department of Computer Science. CS 212 Object-Oriented Programming in Java Practice Exam 2. CS 212 Exam 2 Study Guide

Overview. Building Graphical User Interfaces. GUI Principles. AWT and Swing. Constructing GUIs Interface components GUI layout Event handling

A Simple Text Editor Application

More Swing. Chapter 14. Chapter 14 1

DM550 / DM857 Introduction to Programming. Peter Schneider-Kamp

JAVA NOTES GRAPHICAL USER INTERFACES

Layouts and Components Exam

More Swing. CS180 Recitation 12/(04,05)/08

1.1 GUI. JFrame. import java.awt.*; import javax.swing.*; public class XXX extends JFrame { public XXX() { // XXX. init() main() public static

Attempt FOUR questions Marking Scheme Time: 120 mins

JAVA NOTES GRAPHICAL USER INTERFACES

Java Help Files. by Peter Lavin. May 22, 2004

Today. cisc3120-fall2012-parsons-lectiii.3 2

Frames, GUI and events. Introduction to Swing Structure of Frame based applications Graphical User Interface (GUI) Events and event handling

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Graphical User Interface (Part-3) Supplementary Material for CPSC 233

Introduction to the JAVA UI classes Advanced HCI IAT351

JLayeredPane. Depth Constants in JLayeredPane

Part 3: Graphical User Interface (GUI) & Java Applets

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

CSE 143. Event-driven Programming and Graphical User Interfaces (GUIs) with Swing/AWT

University of Cape Town Department of Computer Science. Computer Science CSC117F Solutions

MIT AITI Swing Event Model Lecture 17

CS 180 Final Exam Review 12/(11, 12)/08

Graphics programming. COM6516 Object Oriented Programming and Design Adam Funk (originally Kirill Bogdanov & Mark Stevenson)

Java. GUI building with the AWT

CSEN401 Computer Programming Lab. Topics: Graphical User Interface Window Interfaces using Swing

Handout 14 Graphical User Interface (GUI) with Swing, Event Handling

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

17 GUI API: Container 18 Hello world with a GUI 19 GUI API: JLabel 20 GUI API: Container: add() 21 Hello world with a GUI 22 GUI API: JFrame: setdefau

Java Swing. Recitation 11/(20,21)/2008. CS 180 Department of Computer Science, Purdue University

Datenbank-Praktikum. Universität zu Lübeck Sommersemester 2006 Lecture: Swing. Ho Ngoc Duc 1

Topic 9: Swing. Swing is a BIG library Goal: cover basics give you concepts & tools for learning more

Topic 9: Swing. Why are we studying Swing? GUIs Up to now: line-by-line programs: computer displays text user types text. Outline. 1. Useful & fun!

AP CS Unit 11: Graphics and Events

First Name: AITI 2004: Exam 2 July 19, 2004

Class 16: The Swing Event Model

Lecture 5: Java Graphics

JRadioButton account_type_radio_button2 = new JRadioButton("Current"); ButtonGroup account_type_button_group = new ButtonGroup();

Swing II CHAPTER WINDOW LISTENERS 1034 Example: A Window Listener Inner Class 1036 The dispose Method 1040 The WindowAdapter Class 1041

Swing II Window Listeners Icons and Scroll Bars The Graphics Class Colors 1044

CSIS 10A Assignment 7 SOLUTIONS

Calculator Class. /** * Create a new calculator and show it. */ public Calculator() { engine = new CalcEngine(); gui = new UserInterface(engine); }

Implementing Graphical User Interfaces

The JFrame Class Frame Windows GRAPHICAL USER INTERFACES. Five steps to displaying a frame: 1) Construct an object of the JFrame class

Object-Oriented Programming Design. Topic : Graphics Programming GUI Part I

CSE 8B Intro to CS: Java

1.00 Lecture 14. Lecture Preview

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Dr. Hikmat A. M. AbdelJaber

Graphic User Interfaces. - GUI concepts - Swing - AWT

Class 14: Introduction to the Swing Toolkit

CSE 331. Event-driven Programming and Graphical User Interfaces (GUIs) with Swing/AWT

Graphical User Interfaces 2

SINGLE EVENT HANDLING

Swing from A to Z Some Simple Components. Preface

Chapter 12 Advanced GUIs and Graphics

First Name: AITI 2004: Exam 2 July 19, 2004

Outline. Topic 9: Swing. GUIs Up to now: line-by-line programs: computer displays text user types text AWT. A. Basics

Building a GUI in Java with Swing. CITS1001 extension notes Rachel Cardell-Oliver

Lecture 3: Java Graphics & Events

JFrame In Swing, a JFrame is similar to a window in your operating system

Graphical User Interface (Part-1) Supplementary Material for CPSC 233

Object-Oriented Programming: Revision. Revision / Graphics / Subversion. Ewan Klein. Inf1 :: 2008/09

Swing from A to Z Using Focus in Swing, Part 2. Preface

CS415 Human Computer Interaction

1005ICT Object Oriented Programming Lecture Notes

Swing UI. Powered by Pentalog. by Vlad Costel Ungureanu for Learn Stuff

PROGRAMMING DESIGN USING JAVA (ITT 303) Unit 7

GUI Forms and Events, Part II

Packages: Putting Classes Together

State Application Using MVC

H212 Introduction to Software Systems Honors

Introduction This assignment will ask that you write a simple graphical user interface (GUI).

1.00/1.001 Introduction to Computers and Engineering Problem Solving Fall (total 7 pages)

Lecture 28. Exceptions and Inner Classes. Goals. We are going to talk in more detail about two advanced Java features:

RAIK 183H Examination 2 Solution. November 11, 2013

Swing I CHAPTER EVENT-DRIVEN PROGRAMMING 921 Events and Listeners 921

Object-Oriented Software Engineering. PersonGui (Mark 1) Case Study

Swing I Event-Driven Programming Buttons, Events, and Other Swing Basics Containers and Layout Managers 946

CSC 160 LAB 8-1 DIGITAL PICTURE FRAME. 1. Introduction

Inheritance (cont) Abstract Classes

User interfaces and Swing

University of Cape Town ~ Department of Computer Science. Computer Science 1016S / 1011H ~ January Exam

Graphical User Interfaces 2

Swing Programming Example Number 2

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Basicsof. JavaGUI and SWING

Proctors are unable to respond to queries about the interpretation of exam questions. Do your best to answer exam questions as written.

Programming Language Concepts: Lecture 8

Graphics User Defined Forms, Part I

Starting Out with Java: From Control Structures Through Objects Sixth Edition

Transcription:

Gaddis_516907_Java 4/10/07 2:10 PM Page 113 Chapter 13 Lab Advanced GUI Applications Objectives Be able to add a menu to the menu bar Be able to use nested menus Be able to add scroll bars, giving the user the option of when they will be seen. Be able to change the look and feel, giving the user the option of which look and feel to use Introduction In this lab we will be creating a simple note taking interface. It is currently a working program, but we will be adding features to it. The current program displays a window which has one item on the menu bar, Notes, which allows the user 6 choices. These choices allow the user to store and retrieve up to 2 different notes. It also allows the user to clear the text area or exit the program. We would like to add features to this program which allows the user to change how the user interface appears. We will be adding another choice on the menu bar called Views, giving the user choices about scroll bars and the look and feel of the GUI.

Gaddis_516907_Java 4/10/07 2:10 PM Page 114 114 Lab Manual to Accompany Starting Out with Java 5: From Control Structures to Objects Task #1 Creating a Menu with Submenus 1. Copy the file NoteTaker.java (code listing 13.1) from www.aw.com/cssuport or as directed by your instructor. 2. Compile and run the program. Observe the horizontal menu bar at the top which has only one menu choice, Notes. We will be adding an item to this menu bar called Views that has two submenus. One named Look and Feel and one named Scroll Bars. The submenu named Look and Feel lets the user change the look and feels: Metal, Motif, and Windows. The submenu named Scroll Bars offers the user three choices: Never, Always, and As Needed. When the user makes a choice, the scroll bars are displayed according to the choice. 3. We want to logically break down the problem and make our program easier to read and understand. We will write separate methods to create each of the vertical menus. The three methods that we will be writing are createviews(), createscrollbars(), and createlookandfeel(). The method headings with empty bodies are provided. 4. Let s start with the createlookandfeel() method. This will create the first submenu shown in figure 1. There are three items on this menu, Metal, Motif, and Windows. We will create this menu by doing the following: a) Create a new JMenu with the name Look and Feel. b) Create a new JMenuItem with the name Metal. c) Add an action listener to the menu item (see the createnotes() method to see how this is done). d) Add the menu item to the menu. e) Repeat steps b through d for each of the other two menu items. 5. Similarly, write the createscrollbars() method to create a JMenu that has three menu items, Never, Always, and As Needed. See figure 2. 6. Now that we have our submenus, these menus will become menu items for the Views menu. The createviews() method will make the vertical menu shown cascading from the menu choice Views as shown in figure. We will do this as follows a) Create a new JMenu with the name Views. b) Call the createlookandfeel() method to create the Look and Feel submenu. c) Add an action listener to the Look and Feel menu. d) Add the look and feel menu to the Views menu. e) Repeat steps b through d for the Scroll Bars menu item, this time calling the createscrollbars() method. 7. Finish creating your menu system by adding the Views menu to the menu bar in the constructor.

Gaddis_516907_Java 4/10/07 2:10 PM Page 115 Chapter 13 Lab Advanced GUI Applications 115 Task #2 Adding Scroll Bars and Editing the Action Listener 1. Add scroll bars to the text area by completing the following steps in the constructor a) Create a JScrollPane object called scrolledtext, passing in thetext. b) Change the line that adds to the textpanel, by passing in scrolledtext (which now has thetext.) 2. Edit the action listener by adding 6 more branches to the else-if logic. Each branch will compare the actioncommand to the 6 submenu items: Metal, Motif, Window, Never, Always, and As Needed. a) Each Look and Feel submenu item will use a try-catch statement to set the look and feel to the appropriate one, displaying an error message if this was not accomplished. b) Each Scroll Bars submenu item will set the horizontal and vertical scroll bar policy to the appropriate values. c) Any components that have already been created need to be updated. This can be accomplished by calling the SwingUtilities.updateComponentTreeUI method, passing a reference to the component that you want to update as an argument. Specifically you will need to add the line SwingUtilities.updateComponentTreeUIgetContentPane()); Figure 1 to each branch that you just added to the logic structure.

Gaddis_516907_Java 4/10/07 2:10 PM Page 116 116 Lab Manual to Accompany Starting Out with Java 5: From Control Structures to Objects Figure 2 Figure 3

Gaddis_516907_Java 4/10/07 2:10 PM Page 117 Chapter 13 Lab Advanced GUI Applications 117 Code Listing 13.1 (NoteTaker.java) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class NoteTaker extends JFrame //constants for set up of note taking area public static final int WIDTH = 600; public static final int HEIGHT = 300; public static final int LINES = 13; public static final int CHAR_PER_LINE = 45; //objects in GUI private JTextArea thetext; private JMenuBar mbar; private JPanel textpanel; private JMenu notesmenu; //area to take notes //horizontal menu bar //panel to hold scrolling text area //vertical menu with choices for notes //****THESE ITEMS ARE NOT YET USED. //****YOU WILL BE CREATING THEM IN THIS LAB private JMenu viewmenu; //vertical menu with choices for views private JMenu lafmenu; //vertical menu with look and feel private JMenu sbmenu; //vertical menu with scroll bar option private JScrollPane scrolledtext;//scroll bars //default notes private String note1 = "No Note 1."; private String note2 = "No Note 2."; /**constructor*/ public NoteTaker() //create a closeable JFrame with a specific size super("note Taker"); setsize(width, HEIGHT); setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); Code Listing 13.1 continued on next page.

Gaddis_516907_Java 4/10/07 2:23 PM Page 118 118 Lab Manual to Accompany Starting Out with Java 5: From Control Structures to Objects //set layout of the window setlayout (new BorderLayout()); //creates the vertical menus createnotes(); createviews(); //creates horizontal menu bar and //adds vertical menus to it mbar = new JMenuBar(); mbar.add(notesmenu); //****ADD THE viewmenu TO THE MENU BAR HERE setjmenubar(mbar); //creates a panel to take notes on textpanel = new JPanel(); textpanel.setbackground(color.blue); thetext = new JTextArea(LINES, CHAR_PER_LINE); thetext.setbackground(color.white); //****CREATE A JScrollPane OBJECT HERE CALLED scrolledtext //****AND PASS IN thetext, THEN //****CHANGE THE LINE BELOW BY PASSING IN scrolledtext textpanel.add(thetext); add(textpanel, BorderLayout.CENTER); /**creates vertical menu associated with Notes menu item on menu bar*/ public void createnotes() notesmenu = new JMenu("Notes"); JMenuItem item; item = new JMenuItem("Save Note 1"); Code Listing 13.1 continued on next page.

Gaddis_516907_Java 4/10/07 2:10 PM Page 119 Chapter 13 Lab Advanced GUI Applications 119 item = new JMenuItem("Save Note 2"); item = new JMenuItem("Open Note 1"); item = new JMenuItem("Open Note 2"); item = new JMenuItem("Clear"); item = new JMenuItem("Exit"); /**creates vertical menu associated with Views menu item on the menu bar*/ public void createviews() /**creates the look and feel submenu*/ public void createlookandfeel() /**creates the scroll bars submenu*/ public void createscrollbars() Code Listing 13.1 continued on next page.

Gaddis_516907_Java 4/10/07 2:10 PM Page 120 120 Lab Manual to Accompany Starting Out with Java 5: From Control Structures to Objects private class MenuListener implements ActionListener public void actionperformed(actionevent e) String actioncommand = e.getactioncommand(); if (actioncommand.equals("save Note 1")) note1 = thetext.gettext(); else if (actioncommand.equals("save Note 2")) note2 = thetext.gettext(); else if (actioncommand.equals("clear")) thetext.settext(""); else if (actioncommand.equals("open Note 1")) thetext.settext(note1); else if (actioncommand.equals("open Note 2")) thetext.settext(note2); else if (actioncommand.equals("exit")) System.exit(0); //****ADD 6 BRANCHES TO THE ELSE-IF STRUCTURE //****TO ALLOW ACTION TO BE PERFORMED FOR EACH //****MENU ITEM YOU HAVE CREATED else thetext.settext("error in memo interface"); public static void main(string[] args) NoteTaker gui = new NoteTaker(); gui.setvisible(true);