Lecture 5: Java Graphics

Similar documents
Lecture 3: Java Graphics & Events

Lab & Assignment 1. Lecture 3: ArrayList & Standard Java Graphics. Random Number Generator. Read Lab & Assignment Before Lab Wednesday!

+! Today. Lecture 3: ArrayList & Standard Java Graphics 1/26/14! n Reading. n Objectives. n Reminders. n Standard Java Graphics (on course webpage)

Introduction to the JAVA UI classes Advanced HCI IAT351

CS 251 Intermediate Programming GUIs: Components and Layout

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

Packages: Putting Classes Together

IT101. Graphical User Interface

Graphical User Interfaces (GUIs)

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

Graphics. Lecture 18 COP 3252 Summer June 6, 2017

Introduction to Graphical User Interfaces (GUIs) Lecture 10 CS2110 Fall 2008

PIC 20A GUI with swing

CS11 Java. Fall Lecture 3

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

Computer Science 210: Data Structures. Intro to Java Graphics

Java Programming Lecture 6

Virtualians.ning.pk. 2 - Java program code is compiled into form called 1. Machine code 2. native Code 3. Byte Code (From Lectuer # 2) 4.

Window Interfaces Using Swing Objects

PROGRAMMING DESIGN USING JAVA (ITT 303) Unit 7

H212 Introduction to Software Systems Honors

CS 251 Intermediate Programming GUIs: Event Listeners

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!

Window Interfaces Using Swing Objects

KF5008 Program Design & Development. Lecture 1 Usability GUI Design and Implementation

Come & Join Us at VUSTUDENTS.net

Graphic User Interfaces. - GUI concepts - Swing - AWT

G51PRG: Introduction to Programming Second semester Applets and graphics

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

Heavyweight with platform-specific widgets. AWT applications were limited to commonfunctionality that existed on all platforms.

Programming graphics

Example: Building a Java GUI

Java & Graphical User Interface II. Wang Yang wyang AT njnet.edu.cn

OOP Assignment V. For example, the scrolling text (moving banner) problem without a thread looks like:

Example: Building a Java GUI

G51PGP Programming Paradigms. Lecture 008 Inner classes, anonymous classes, Swing worker thread

Java Graphical User Interfaces AWT (Abstract Window Toolkit) & Swing

SD Module-1 Advanced JAVA

SD Module-1 Advanced JAVA. Assignment No. 4

(listener)... MouseListener, ActionLister. (adapter)... MouseAdapter, ActionAdapter. java.awt AWT Abstract Window Toolkit GUI

Introduction to Graphical Interface Programming in Java. Introduction to AWT and Swing

Swing from A to Z Some Simple Components. Preface

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

Lab 4. D0010E Object-Oriented Programming and Design. Today s lecture. GUI programming in

Introduction to GUIs. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2014

Graphics User Defined Forms, Part I

Example Programs. COSC 3461 User Interfaces. GUI Program Organization. Outline. DemoHelloWorld.java DemoHelloWorld2.java DemoSwing.

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

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

Lecture 9. Lecture

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

An applet is a program written in the Java programming language that can be included in an HTML page, much in the same way an image is included in a

Graphical User Interface (GUI) components in Java Applets. With Abstract Window Toolkit (AWT) we can build an applet that has the basic GUI

2IS45 Programming

Control Flow: Overview CSE3461. An Example of Sequential Control. Control Flow: Revisited. Control Flow Paradigms: Reacting to the User

Programming Language Concepts: Lecture 8

Java Swing. Lists Trees Tables Styled Text Components Progress Indicators Component Organizers

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

GUI Program Organization. Sequential vs. Event-driven Programming. Sequential Programming. Outline

CS11 Java. Fall Lecture 4

Graphical User Interface (GUI)

Swing. By Iqtidar Ali

Programming Languages and Techniques (CIS120)

Method Of Key Event Key Listener must implement three methods, keypressed(), keyreleased() & keytyped(). 1) keypressed() : will run whenever a key is

Java: Graphical User Interfaces (GUI)

CPS122 Lecture: Graphical User Interfaces and Event-Driven Programming

Unit 7: Event driven programming

Java How to Program, 9/e. Copyright by Pearson Education, Inc. All Rights Reserved.

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

Graphical User Interface (GUI)

FirstSwingFrame.java Page 1 of 1

2110: GUIS: Graphical User Interfaces

Graphics and Painting

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

Graphical User Interfaces 2

Graphical User Interfaces. Comp 152

Java. GUI building with the AWT

AP CS Unit 12: Drawing and Mouse Events

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

COMP-202 Unit 10: Basics of GUI Programming (Non examinable) (Caveat: Dan is not an expert in GUI programming, so don't take this for gospel :) )

AP CS Unit 11: Graphics and Events

BASICS OF GRAPHICAL APPS

MIT AITI Swing Event Model Lecture 17

1.00/1.001 Introduction to Computers and Engineering Problem Solving Spring Quiz 2

1.00 Lecture 14. Lecture Preview

HW#1: Pencil Me In Status!? How was Homework #1? Reminder: Handouts. Homework #2: Java Draw Demo. 3 Handout for today! Lecture-Homework mapping.

CS 11 java track: lecture 3

Command-Line Applications. GUI Libraries GUI-related classes are defined primarily in the java.awt and the javax.swing packages.

Class 14: Introduction to the Swing Toolkit

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

Programmierpraktikum

GUI DYNAMICS Lecture July 26 CS2110 Summer 2011

Systems Programming Graphical User Interfaces

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

INTRODUCTION TO (GUIS)

ming 3 Resize the Size to [700, 500]. Note that the background containers in the program code: reference the then under () { 153, 255, 0 ) );

CONTENTS. Chapter 1 Getting Started with Java SE 6 1. Chapter 2 Exploring Variables, Data Types, Operators and Arrays 13

User interfaces and Swing

I/O Framework and Case Study. CS151 Chris Pollett Nov. 2, 2005.

Transcription:

Lecture 5: Java Graphics CS 62 Spring 2019 William Devanny & Alexandra Papoutsaki 1

New Unit Overview Graphical User Interfaces (GUI) Components, e.g., JButton, JTextField, JSlider, JChooser, Containers, e.g., JFrame (window), JPanel (grouping) Layout managers, e.g., FlowLayout and BorderLayout Graphics Drawing items on the screen Events Generated by mouse actions, button clicks etc. Use MouseListener, MouseMotionListener, ActionListener, etc. to respond

Graphical User Interfaces (GUIs) AWT - The Abstract Windowing Toolkit is found in the package java.awt. Heavyweight components. Implemented with native code written for that particular computer. The AWT library was written in six weeks! Swing Java 1.2 extended AWT with the javax.swing package. Lightweight components Written in Java

JFrame javax.swing.jframe inherits from java.awt.frame The outermost container in an application. To display a window in Java: create a class that extends JFrame set the size set the location set it visible

import javax.swing.jframe; public class MyFirstGUI extends JFrame{ public MyFirstGUI() { super("first Frame"); setsize(500, 300); } setlocation(100, 100); setvisible(true); } public static void main(string[] args) { MyFirstGUI mfgui = new MyFirstGUI(); }

Closing a GUI The default operation of the quit button is to set the visibility to false The program does not terminate! setdefaultcloseoperation can be used to control this behavior. mfgui.setdefaultcloseoperation(jframe.exit_on_close); Exits the application using System.exit(0) More options (hide, do nothing, etc).

Basic Components

Interactive Displays

Adding JComponents to JFrame public class Demo extends JFrame{ public Demo() { Container cp = getcontentpane(); cp.setlayout(new FlowLayout()); cp.add(new JLabel("Demo")); cp.add(new JButton("Button")); //... } } public class Demo extends JFrame{ } public Demo() { } JPanel mypanel = new JPanel(new FlowLayout()); mypanel.add(new JLabel("Demo")); mypanel.add(new JButton("Button")); setcontentpane(mypanel); //...

Graphics Create objects you want to draw: Rectangle2D.Double, Line.Double, etc. Constructors take x,y coords and dimensions, but don t actually draw items. All drawing takes place in paint method using a graphics context an object you can use to draw graphics primitives Triggered implicitly by uncovering window or explicitly by calling repaint method. Adds repaint event to event queue eventually draws it

Graphics context All drawing is done in paint method of component public void paint(graphics g) g is a Graphics context provided by system pen that does the drawing Programmer calls repaint(), not paint()!! Need to import classes from java.awt.*, java.geom.*, javax.swing.* See MyGraphicsDemo

General Graphics Applications Create an extension of component (either JPanel, JFrame, or JApplet) and implement paint method in the subclass. See main method of demo to get window to show At start of paint method cast g to Graphics2D to get access to new methods Call repaint() on component every time you make a change. Causes OS to schedule call of paint in event queue Called automatically if window obscured and revealed

Geometric Objects Objects from classes Rectangle2D.Double, Line2D.Double, etc. from java.awt.geom There are also float versions Constructors take params x, y, width, height, but don t draw object Rectangle2D.Double RoundRectangle2D.Double Ellipse2D.Double Arc2D.Double Line2D.Double,

java.awt.color

Methods myobj.setframe(x,y,width,height) : can move object g2.draw(myobj) : gives outline g2.fill(myobj) : gives filled version g2.drawstring( a string,x,y) : draws string

MyGraphicsDemo Class extends JFrame, which creates window. Constructor calls super with title of window. main method creates object, sets size, visibility, and enables goaway box. paint method creates and draws objects.

BorderLayout

PostItApplication More sophisticated. JFrame contains two JPanels. JFrame uses BorderLayout, so add controls to Jpanel in SOUTH, drawing canvas in CENTER of the JFrame. DrawingCanvas extends JPanel -- contains paint method Note use of ArrayList to hold PostIts.

PostIt Represents the rectangles being dragged: Contains getter(accessor) and setter(mutator) methods to allow it to be manipulated by drawing program. Could add features (title bar, go-away box) without affecting PostItApplication code.

PostItApplication PostItApplication class responsible for setting up the GUI Responding to button pressed and menu selections Sets up ArrayList of items on canvas. Class has 3 inner classes DrawingCanvas DrawingMouseListener DrawingMouseMotionListener Inner classes have access to private features of containing class

Inner Classes DrawingCanvas extends JPanel Associates listeners for mouse actions on the canvas Responsible for repainting the screen DrawingMouseListener and DrawingMouseMotionListener Responsible for responding to mouse actions by changing the items in the ArrayList.

Handling Mouse Events If you want program to react to mouse press, click, or release on a component send addmouselistener(mlo) to component (usually in the constructor of the component) See PostItApplication.java For motion or drag, send addmousemotionlistener(mlo) When user presses mouse on a component Computer looks for registered MouseListener for component or its containers. If found, sends mousepressed(evt) to listener

Listener Object designated as mouse listener must implement MouseListener (& implement mousepressed, mousereleased, & mouseclicked) or extend MouseAdapter (which has default implementations of all 3) Second is easier unless class already extends another. Can only extend one class in Java Similarly, for mouse motion listener implement MouseMotionListener or extend MouseMotionAdapter

Listeners in PostItApplication Main class (this) is listener for button and choice. Set up when GUI items constructed Special listener objects for mouse actions. Set up by DrawingCanvas since listening for actions on that object.