Scripting With Java. Table of contents

Size: px
Start display at page:

Download "Scripting With Java. Table of contents"

Transcription

1 by Stephane Hillion, Thomas DeWeese Table of contents 1 Introduction How to manipulate a JSVGCanvas DOM document Writing thread-safe code Using the SVG DOM Alternate way to manipulate an SVG document...6

2 1. Introduction This section explains how to manipulate the DOM tree of an SVG document from a Java program. It contains the following sub-sections: How to manipulate a JSVGCanvas document? How to write thread-safe code? Using the SVG DOM How to run Java code using a <script> element? 2. How to manipulate a JSVGCanvas DOM document The follow code template demonstrates how to manipulate an SVG document displayed in a JSVGCanvas directly from a Java program. Note: You don't have to worry about graphics updates: after each event listener invocation the canvas is updated if needed. import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.jframe; import org.apache.batik.swing.jsvgcanvas; import org.apache.batik.swing.svg.svgloadeventdispatcheradapter; import org.apache.batik.swing.svg.svgloadeventdispatcherevent; import org.apache.batik.script.window; import org.w3c.dom.document; import org.w3c.dom.element; import org.w3c.dom.events.event; import org.w3c.dom.events.eventlistener; import org.w3c.dom.events.eventtarget; public class SVGApplication { public static void main(string[] args) { new SVGApplication(); JFrame frame; JSVGCanvas canvas; Document document; Window window; public SVGApplication() { frame = new JFrame(); canvas = new JSVGCanvas(); // Forces the canvas to always be dynamic even if the current Page 2

3 // document does not contain scripting or animation. canvas.setdocumentstate(jsvgcanvas.always_dynamic); canvas.addsvgloadeventdispatcherlistener (new SVGLoadEventDispatcherAdapter() { public void svgloadeventdispatchstarted (SVGLoadEventDispatcherEvent e) { // At this time the document is available... document = canvas.getsvgdocument(); //...and the window object too. window = canvas.getupdatemanager(). getscriptingenvironment().createwindow(); // Registers the listeners on the document // just before the SVGLoad event is // dispatched. registerlisteners(); // It is time to pack the frame. frame.pack(); ); frame.addwindowlistener(new WindowAdapter() { public void windowopened(windowevent e) { // The canvas is ready to load the base document // now, from the AWT thread. canvas.seturi("doc.svg"); ); frame.getcontentpane().add(canvas); frame.setsize(800, 600); frame.show(); public void registerlisteners() { // Gets an element from the loaded document. Element elt = document.getelementbyid("elt-id"); EventTarget t = (EventTarget)elt; // Adds a 'onload' listener t.addeventlistener("svgload", new OnLoadAction(), false); // Adds a 'onclick' listener t.addeventlistener("click", new OnClickAction(), false); public class OnLoadAction implements EventListener { public void handleevent(event evt) { // Make some actions here... //...for example start an animation loop: window.setinterval(new Animation(), 50); Page 3

4 public class OnClickAction implements EventListener { public void handleevent(event evt) { // Make some actions here... //...for example schedule an action for later: window.settimeout(new DelayedTask(), 500); public class Animation implements Runnable { // Insert animation code here... public class DelayedTask implements Runnable { // Make some actions here... //...for example displays an alert dialog: window.alert("delayed Action invoked!"); 3. Writing thread-safe code The DOM listeners registered on the SVG document are called from the canvas update thread. To avoid race conditions do not manipulate the DOM tree from another thread. The way to switch from an external thread to the canvas update thread is to use the following code: // Returns immediately canvas.getupdatemanager().getupdaterunnablequeue(). invokelater(new Runnable() { // Insert some actions on the DOM here ); - or - // Waits until the Runnable is invoked canvas.getupdatemanager().getupdaterunnablequeue(). invokeandwait(new Runnable() { // Insert some actions on the DOM here ); Like with event listeners, when a Runnable is invoked from the update thread, the graphics Page 4

5 are updated. Note: It is very dangerous to call 'invokeandwait' from the Swing Event thread. This is the only thread that can be used to interact with Swing components. In some cases DOM calls may need to query the canvas for information (such as actual Swing component size etc). If this happens you will get a thread deadlock. You should only make invokeandwait calls from 'third party' threads. 4. Using the SVG DOM Batik provides a fairly complete implementation of the SVG DOM. The SVG DOM provides all the functionality most applications require. In particular the DOM implements DOM Events including mutation and UI Events. DOM events allow you to get notified when the cursor moves over elements of interest: // Element of Interest. Element theelem; ((EventTarget)theElem).addEventListener("mouseover", mouseoverlistener, true); Where mouseoverlistener implements the org.w3c.dom.events.eventlistener interface. This interface consists of the method: public void handleevent(event evt); This is called whenever the event occurs with the element it is registered on. It is worth reviewing the DOM Events specification as there are many useful features to this interface that are not immediately obvious. It is also worth looking at the DOM interfaces defined by the SVG specification as they provide a large number of useful methods, in particular the SVGLocatable: // Returns Bounding box of SVG Element. public SVGRect getbbox ( ); // Returns the transformation matrix to the screen. public SVGMatrix getscreenctm ( ); // Returns the transformation matrix to the given element. public SVGMatrix gettransformtoelement ( SVGElement element ) throws SVGException; In particular getscreenctm is very useful for taking the 'clientx', 'clienty' attributes of the DOM UIEvent and mapping them to the coordinate system of an element in the SVG document: Page 5

6 SVGMatrix mat = elem.getscreenctm(); SVGMatrix imat = mat.inverse(); SVGPoint cpt = document.getrootelement().createsvgpoint(); cpt.setx(uievt.clientx); cpt.sety(uievt.clienty); cpt = cpt.matrixtransform(imat); 5. Alternate way to manipulate an SVG document Batik provides an extension of the SVG <script> element which allows Java programs to be called from an SVG document. This feature is available to any application of Batik that uses the bridge module (for example the Swing component and the transcoders). In order to use this extension, the type attribute of a <script> element must be set to application/java-archive. In addition the xlink:href attribute must be the URI of a jar file which contains the program to run. The manifest of this jar file must contains an entry of the form: SVG-Handler-Class: classname Where classname must be the name of a class which implements the org.w3c.dom.svg.eventlistenerinitializer interface. See the javadoc of this interface for more details. The class can be contained directly in the jar file, but it is also possible for it to be contained in a jar file added to the classpath using the Class-Path entry of the manifest. Page 6

Graphical User Interfaces (GUIs)

Graphical User Interfaces (GUIs) CMSC 132: Object-Oriented Programming II Graphical User Interfaces (GUIs) Department of Computer Science University of Maryland, College Park Model-View-Controller (MVC) Model for GUI programming (Xerox

More information

(Incomplete) History of GUIs

(Incomplete) History of GUIs CMSC 433 Programming Language Technologies and Paradigms Spring 2004 Graphical User Interfaces April 20, 2004 (Incomplete) History of GUIs 1973: Xerox Alto 3-button mouse, bit-mapped display, windows 1981:

More information

!"# $ %&# %####' #&() % # # # #&* # ## +, # -

!# $ %&# %####' #&() % # # # #&* # ## +, # - By Pep Jorge @joseplluisjorge Steema Software July 213!"# $ %&# %####' #&() % # # # #&* # ## +, # -. / " - $- * 11 1 1$ 2 11 1 3 4 / $ 5 5,+67 +68$ Copyright 213 Steema Software SL. Copyright Information.

More information

Chapter 8. Java continued. CS Hugh Anderson s notes. Page number: 264 ALERT. MCQ test next week. This time. This place.

Chapter 8. Java continued. CS Hugh Anderson s notes. Page number: 264 ALERT. MCQ test next week. This time. This place. Chapter 8 Java continued CS3283 - Hugh Anderson s notes. Page number: 263 ALERT MCQ test next week This time This place Closed book CS3283 - Hugh Anderson s notes. Page number: 264 ALERT Assignment #2

More information

Java continued. Chapter 8 ALERT ALERT. Last week. MCQ test next week. This time. This place. Closed book. Assignment #2 is for groups of 3

Java continued. Chapter 8 ALERT ALERT. Last week. MCQ test next week. This time. This place. Closed book. Assignment #2 is for groups of 3 Chapter 8 Java continued MCQ test next week This time This place Closed book ALERT CS3283 - Hugh Anderson s notes. Page number: 263 CS3283 - Hugh Anderson s notes. Page number: 264 ALERT Last week Assignment

More information

[module lab 2.2] GUI FRAMEWORKS & CONCURRENCY

[module lab 2.2] GUI FRAMEWORKS & CONCURRENCY v1.0 BETA Sistemi Concorrenti e di Rete LS II Facoltà di Ingegneria - Cesena a.a 2008/2009 [module lab 2.2] GUI FRAMEWORKS & CONCURRENCY 1 GUI FRAMEWORKS & CONCURRENCY Once upon a time GUI applications

More information

ECE 750 T11 Component Based Software Systems Project Presentation I Nilam Kaushik (Group 7) University of Waterloo Faculty of Engineering

ECE 750 T11 Component Based Software Systems Project Presentation I Nilam Kaushik (Group 7) University of Waterloo Faculty of Engineering ECE 750 T11 Component Based Software Systems Project Presentation I Nilam Kaushik (Group 7) University of Waterloo Faculty of Engineering Outline Introduction to SVG Proposed project Approach Expected

More information

Java Swing Introduction

Java Swing Introduction Course Name: Advanced Java Lecture 18 Topics to be covered Java Swing Introduction What is Java Swing? Part of the Java Foundation Classes (JFC) Provides a rich set of GUI components Used to create a Java

More information

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

Heavyweight with platform-specific widgets. AWT applications were limited to commonfunctionality that existed on all platforms. Java GUI Windows Events Drawing 1 Java GUI Toolkits Toolkit AWT Description Heavyweight with platform-specific widgets. AWT applications were limited to commonfunctionality that existed on all platforms.

More information

ECE 750 T11 Component Based Software Systems Project Presentation II Nilam Kaushik (Group 7) University of Waterloo Faculty of Engineering

ECE 750 T11 Component Based Software Systems Project Presentation II Nilam Kaushik (Group 7) University of Waterloo Faculty of Engineering ECE 750 T11 Component Based Software Systems Project Presentation II Nilam Kaushik (Group 7) University of Waterloo Faculty of Engineering Outline Recap of Presentation I Vector vs raster graphics Problem

More information

A The SVG Micro DOM (udom)

A The SVG Micro DOM (udom) 05/18/2005 10:03 AM SVG Tiny 1.2-20050413 Top Contents Previous Next Elements Attributes A The SVG Micro DOM (udom) Contents A.1 Introduction A.2 Overview of the SVG udom A.2.1 Document Access A.2.2 Tree

More information

Scalable 2D Vector Graphics API

Scalable 2D Vector Graphics API Scalable 2D Vector Graphics API for J2ME Version 1.0 JSR-226 Expert Group jsr-226-comments@jcp.org Java Community Process Copyright 2003-2004 Nokia Corporation. All Rights Reserved. Java is a registered

More information

All the Swing components start with J. The hierarchy diagram is shown below. JComponent is the base class.

All the Swing components start with J. The hierarchy diagram is shown below. JComponent is the base class. Q1. If you add a component to the CENTER of a border layout, which directions will the component stretch? A1. The component will stretch both horizontally and vertically. It will occupy the whole space

More information

Scalable Vector Graphics (SVG) for the Mobile Domain

Scalable Vector Graphics (SVG) for the Mobile Domain Scalable Vector Graphics (SVG) for the Mobile Domain Approved Version 1.0 17 Mar 2009 Open Mobile Alliance OMA-TS-SVG_Mobile-V1_0-20090317-A OMA-TS-SVG_Mobile-V1_0-20090317-A Page 2 (30) Use of this document

More information

6.092 Introduction to Software Engineering in Java January (IAP) 2009

6.092 Introduction to Software Engineering in Java January (IAP) 2009 MIT OpenCourseWare http://ocw.mit.edu 6.092 Introduction to Software Engineering in Java January (IAP) 2009 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.

More information

Problems with Concurrency. February 19, 2014

Problems with Concurrency. February 19, 2014 with Concurrency February 19, 2014 s with concurrency interleavings race conditions dead GUI source of s non-determinism deterministic execution model 2 / 30 General ideas Shared variable Access interleavings

More information

Supporting Materials

Supporting Materials Preface p. xxiii Introduction p. xxiii Key Features p. xxiii Chapter Outlines p. xxiv Supporting Materials p. xxvi Acknowledgments p. xxvii Java Fundamentals p. 1 Bits, Bytes, and Java p. 2 The Challenge

More information

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

Introduction to Graphical Interface Programming in Java. Introduction to AWT and Swing Introduction to Graphical Interface Programming in Java Introduction to AWT and Swing GUI versus Graphics Programming Graphical User Interface (GUI) Graphics Programming Purpose is to display info and

More information

Graphical User Interfaces in Java Part 2

Graphical User Interfaces in Java Part 2 Graphical User Interfaces in Java Part 2 COMP440 Penn State Harrisburg April 17, 2007 Julia M. Lobur 1 Objectives Illustrate Swing look-and-feel. Demonstrate the relationship between concurrency and Java

More information

CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers

CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers 1 Critical sections and atomicity We have been seeing that sharing mutable objects between different threads is tricky We need some

More information

1 OBJECT-ORIENTED PROGRAMMING 1

1 OBJECT-ORIENTED PROGRAMMING 1 PREFACE xvii 1 OBJECT-ORIENTED PROGRAMMING 1 1.1 Object-Oriented and Procedural Programming 2 Top-Down Design and Procedural Programming, 3 Problems with Top-Down Design, 3 Classes and Objects, 4 Fields

More information

CMSC 433 Programming Language Technologies and Paradigms. Spring 2013

CMSC 433 Programming Language Technologies and Paradigms. Spring 2013 CMSC 433 Programming Language Technologies and Paradigms Spring 2013 Encapsulation, Publication, Escape Data Encapsulation One of the approaches in object-oriented programming is to use data encapsulation

More information

Problems with Concurrency

Problems with Concurrency with Concurrency February 14, 2012 1 / 27 s with concurrency race conditions deadlocks GUI source of s non-determinism deterministic execution model interleavings 2 / 27 General ideas Shared variable Shared

More information

EPITA Première Année Cycle Ingénieur. Atelier Java - J5

EPITA Première Année Cycle Ingénieur. Atelier Java - J5 EPITA Première Année Cycle Ingénieur marwan.burelle@lse.epita.fr http://www.lse.epita.fr Overview 1 2 Different toolkits AWT: the good-old one, lakes some features and has a plateform specific look n

More information

Document Object Model (DOM) Level 3 Events

Document Object Model (DOM) Level 3 Events Document Object Model (DOM) Level 3 Events Specification Document Object Model (DOM) Level 3 Events Specification Version 10 W3C Working Draft 08 February 2002 This version: http://wwww3org/tr/2002/wd-dom-level-3-events-20020208

More information

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE

More information

Document Object Model (DOM) Level 3 Events

Document Object Model (DOM) Level 3 Events Document Object Model (DOM) Level 3 Events Specification Document Object Model (DOM) Level 3 Events Specification Version 10 W3C Working Draft 23 August 2001 This version: http://wwww3org/tr/2001/wd-dom-level-3-events-20010823

More information

Using Beans to Build an Application Naming Patterns for Bean Components Events Bean Property Types

Using Beans to Build an Application Naming Patterns for Bean Components Events Bean Property Types Course Name: Advanced Java Lecture 23 Topics to be covered Using Beans to Build an Application Naming Patterns for Bean Components Events Bean Property Types Using Beans to Build an Application Builder

More information

Lecture 9. Lecture

Lecture 9. Lecture Layout Components MVC Design PaCern GUI Programming Observer Design PaCern D0010E Lecture 8 - Håkan Jonsson 1 Lecture 8 - Håkan Jonsson 2 Lecture 8 - Håkan Jonsson 3 1 1. GUI programming In the beginning,

More information

Core Java Syllabus. Pre-requisite / Target Audience: C language skills (Good to Have)

Core Java Syllabus. Pre-requisite / Target Audience: C language skills (Good to Have) Overview: Java programming language is developed by Sun Microsystems. Java is object oriented, platform independent, simple, secure, architectural neutral, portable, robust, multi-threaded, high performance,

More information

Java Concurrency in practice Chapter 9 GUI Applications

Java Concurrency in practice Chapter 9 GUI Applications Java Concurrency in practice Chapter 9 GUI Applications INF329 Spring 2007 Presented by Stian and Eirik 1 Chapter 9 GUI Applications GUI applications have their own peculiar threading issues To maintain

More information

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

Lab 4. D0010E Object-Oriented Programming and Design. Today s lecture. GUI programming in Lab 4 D0010E Object-Oriented Programming and Design Lecture 9 Lab 4: You will implement a game that can be played over the Internet. The networking part has already been written. Among other things, the

More information

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.

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. 1 - What if the main method is declared as private? 1. The program does not compile 2. The program compiles but does not run 3. The program compiles and runs properly ( From Lectuer # 2) 4. The program

More information

Graphic Interface Programming II Events and Threads. Uppsala universitet

Graphic Interface Programming II Events and Threads. Uppsala universitet Graphic Interface Programming II Events and Threads IT Uppsala universitet Animation Animation adds to user experience Done right, it enhances the User Interface Done wrong, it distracts and irritates

More information

Getting Started with Java Development and Testing: Netbeans IDE, Ant & JUnit

Getting Started with Java Development and Testing: Netbeans IDE, Ant & JUnit Getting Started with Java Development and Testing: Netbeans IDE, Ant & JUnit 1. Introduction These tools are all available free over the internet as is Java itself. A brief description of each follows.

More information

Introduction to concurrency and GUIs

Introduction to concurrency and GUIs Principles of Software Construction: Objects, Design, and Concurrency Part 2: Designing (Sub)systems Introduction to concurrency and GUIs Charlie Garrod Bogdan Vasilescu School of Computer Science 1 Administrivia

More information

Part I: Learn Common Graphics Components

Part I: Learn Common Graphics Components OOP GUI Components and Event Handling Page 1 Objectives 1. Practice creating and using graphical components. 2. Practice adding Event Listeners to handle the events and do something. 3. Learn how to connect

More information

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

G51PGP Programming Paradigms. Lecture 008 Inner classes, anonymous classes, Swing worker thread G51PGP Programming Paradigms Lecture 008 Inner classes, anonymous classes, Swing worker thread 1 Reminder subtype polymorphism public class TestAnimals public static void main(string[] args) Animal[] animals

More information

CITS3403 Agile Web Development Semester 1, 2018

CITS3403 Agile Web Development Semester 1, 2018 Javascript Event Handling CITS3403 Agile Web Development Semester 1, 2018 Event Driven Programming Event driven programming or event based programming programming paradigm in which the flow of the program

More information

Document Object Model (DOM) Level 3 Events

Document Object Model (DOM) Level 3 Events Document Object Model (DOM) Level 3 Events Specification Document Object Model (DOM) Level 3 Events Specification Version 10 W3C Working Draft 12 July 2002 This version: http://wwww3org/tr/2002/wd-dom-level-3-events-20020712

More information

Downloading and Running TF32J Time-frequency Analysis for Java. Paul Milenkovic Department of Electrical and Computer Engineering

Downloading and Running TF32J Time-frequency Analysis for Java. Paul Milenkovic Department of Electrical and Computer Engineering Downloading and Running TF32J Time-frequency Analysis for Java Paul Milenkovic Department of Electrical and Computer Engineering cspeech@chorus.net TF32J Time-frequency Analysis for Java is an application

More information

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes Java CORE JAVA Core Java Programing (Course Duration: 40 Hours) Introduction to Java What is Java? Why should we use Java? Java Platform Architecture Java Virtual Machine Java Runtime Environment A Simple

More information

G51PGP Programming Paradigms. Lecture 009 Concurrency, exceptions

G51PGP Programming Paradigms. Lecture 009 Concurrency, exceptions G51PGP Programming Paradigms Lecture 009 Concurrency, exceptions 1 Reminder subtype polymorphism public class TestAnimals public static void main(string[] args) Animal[] animals = new Animal[6]; animals[0]

More information

Quiz on Tuesday April 13. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4. Java facts and questions. Things to try in Java

Quiz on Tuesday April 13. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4. Java facts and questions. Things to try in Java CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4 Bruce Char and Vera Zaychik. All rights reserved by the author. Permission is given to students enrolled in CS361 Fall 2004 to reproduce

More information

Document Object Model (DOM) Level 2 Events

Document Object Model (DOM) Level 2 Events Document Object Model (DOM) Level 2 Events Specification Document Object Model (DOM) Level 2 Events Specification Version 10 W3C Proposed Recommendation 27 September, 2000 This version: http://wwww3org/tr/2000/pr-dom-level-2-events-20000927

More information

Object-oriented programming in Java (2)

Object-oriented programming in Java (2) Programming Languages Week 13 Object-oriented programming in Java (2) College of Information Science and Engineering Ritsumeikan University plan last week intro to Java advantages and disadvantages language

More information

Java: Graphical User Interfaces (GUI)

Java: Graphical User Interfaces (GUI) Chair of Software Engineering Carlo A. Furia, Marco Piccioni, and Bertrand Meyer Java: Graphical User Interfaces (GUI) With material from Christoph Angerer The essence of the Java Graphics API Application

More information

Event Handling in JavaFX

Event Handling in JavaFX Event Handling in JavaFX Event Driven Programming Graphics applications use events. An event dispatcher receives events and notifies interested objects. Event Listener Event EventQueue 1. ActionEvent 2.

More information

Building a Java First-Person Shooter

Building a Java First-Person Shooter Building a Java First-Person Shooter Episode 2 [Last update: 4/30/2017] Objectives This episode adds the basic elements of our game loop to the program. In addition, it introduces the concept of threads.

More information

Graphical User Interface (GUI)

Graphical User Interface (GUI) Graphical User Interface (GUI) An example of Inheritance and Sub-Typing 1 Java GUI Portability Problem Java loves the idea that your code produces the same results on any machine The underlying hardware

More information

Java for Interfaces and Networks (DT3010, HT10)

Java for Interfaces and Networks (DT3010, HT10) Java for Interfaces and Networks (DT3010, HT10) Mouse Events, Timers, Serialization Federico Pecora School of Science and Technology Örebro University federico.pecora@oru.se Federico Pecora Java for Interfaces

More information

The Flying Saucer User's Guide

The Flying Saucer User's Guide The Flying Saucer User's Guide Getting Started with Flying Saucer Release R6 May 2006 Table of Contents 1. 2. 3. An Introduction to Flying Saucer 1. What It Is 2. What It Does 3. What It's Good For 4.

More information

Animation Part 2: MoveableShape interface & Multithreading

Animation Part 2: MoveableShape interface & Multithreading Animation Part 2: MoveableShape interface & Multithreading MoveableShape Interface In the previous example, an image was drawn, then redrawn in another location Since the actions described above can apply

More information

CS108, Stanford Handout #22. Thread 3 GUI

CS108, Stanford Handout #22. Thread 3 GUI CS108, Stanford Handout #22 Winter, 2006-07 Nick Parlante Thread 3 GUI GUIs and Threading Problem: Swing vs. Threads How to integrate the Swing/GUI/drawing system with threads? Problem: The GUI system

More information

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

Control Flow: Overview CSE3461. An Example of Sequential Control. Control Flow: Revisited. Control Flow Paradigms: Reacting to the User CSE3461 Control Flow Paradigms: Reacting to the User Control Flow: Overview Definition of control flow: The sequence of execution of instructions in a program. Control flow is determined at run time by

More information

Java Event Handling -- 1

Java Event Handling -- 1 Java Event Handling -- 1 Event Handling Happens every time a user interacts with a user interface. For example, when a user pushes a button, or types a character. 2 A Typical Situation: Scrollbar AWTEvent

More information

Internet Programming Week 10. Instructor: Paulo Fernandes Applied Computer Science University of Winnipeg

Internet Programming Week 10. Instructor: Paulo Fernandes Applied Computer Science University of Winnipeg Internet Programming Week 10 Instructor: Paulo Fernandes Applied Computer Science University of Winnipeg Web Workers Slides only Threading Ever get a slow script message? Q) How could a script be slow

More information

Lecture 3: Java Graphics & Events

Lecture 3: Java Graphics & Events Lecture 3: Java Graphics & Events CS 62 Fall 2017 Kim Bruce & Alexandra Papoutsaki Text Input Scanner class Constructor: myscanner = new Scanner(System.in); can use file instead of System.in new Scanner(new

More information

Give one example where you might wish to use a three dimensional array

Give one example where you might wish to use a three dimensional array CS 110: INTRODUCTION TO COMPUTER SCIENCE SAMPLE TEST 3 TIME ALLOWED: 60 MINUTES Student s Name: MAXIMUM MARK 100 NOTE: Unless otherwise stated, the questions are with reference to the Java Programming

More information

Systems Programming. Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid

Systems Programming. Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid Systems Programming Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid Leganés, 21st of March, 2014. Duration: 75 min. Full

More information

Programming Language Concepts: Lecture 9

Programming Language Concepts: Lecture 9 Programming Language Concepts: Lecture 9 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in PLC 2011, Lecture 9, 10 February 2011 The event queue OS passes on low-level events to run-time

More information

Distributed Collaboration - Assignment 1: Multi-View 1-User IM

Distributed Collaboration - Assignment 1: Multi-View 1-User IM Distributed Collaboration - Assignment 1: Multi-View 1-User IM Date Assigned:??? 1-View Target Date:??? Multi-View Submission Date:??? Objectives: Understand the use of observer pattern in user -interface

More information

Beyond CSE143. What s Left To Do? Templates. Using Templates. A Template Class. A Problem with Reusing Code CSE 143

Beyond CSE143. What s Left To Do? Templates. Using Templates. A Template Class. A Problem with Reusing Code CSE 143 What s Left To Do? Beyond CSE143 Templates Modern Software Development Windows and Java 143 Wrapup Beyond the C++ covered in this course Many topics, many more details of topics we did cover Main omission:

More information

SE 552: Lecture 9. Overview. Asynchronous method calls. Worker pools. Timers. Event loops. Polling IO

SE 552: Lecture 9. Overview. Asynchronous method calls. Worker pools. Timers. Event loops. Polling IO SE 552: Lecture 9 Overview Asynchronous method calls Worker pools Timers Event loops Polling IO Asynchronous method calls What is an asynchronous method call (a.k.a. one-way message)? public class MultiThreadedServer

More information

User interfaces and Swing

User interfaces and Swing User interfaces and Swing Overview, applets, drawing, action listening, layout managers. APIs: java.awt.*, javax.swing.*, classes names start with a J. Java Lectures 1 2 Applets public class Simple extends

More information

Borland JBuilder 7 Product Certification. Study Guide

Borland JBuilder 7 Product Certification. Study Guide Borland JBuilder 7 Product Certification Study Guide Guía ofrecida por el Grupo Danysoft Primer Borland Learning Partner de España y Portugal Para realizar el examen o cursos oficiales preparatorios contacte

More information

) / Java ( )

) / Java ( ) 2002 3 2003.1.29 1 3 ( ) ( ) / Java ( ) 1 ( )? ( ) 2 (3 ) 3 Java Java Java (dynamic dispatch) ( ) import java.awt.*; import java.awt.event.*; public class Sample30 extends Frame { boolean go; double time;

More information

Chapter 2. Network Chat

Chapter 2. Network Chat Chapter 2. Network Chat In a multi-player game, different players interact with each other. One way of implementing this is to have a centralized server that interacts with each client using a separate

More information

CSC207 Week 4. Larry Zhang

CSC207 Week 4. Larry Zhang CSC207 Week 4 Larry Zhang 1 Logistics A1 Part 1, read Arnold s emails. Follow the submission schedule. Read the Q&A session in the handout. Ask questions on the discussion board. Submit on time! Don t

More information

COMP3421 Computer Graphics

COMP3421 Computer Graphics COMP3421 Computer Graphics Introduction Angela Finlayson Email: angf@cse.unsw.edu.au Computer Graphics Algorithms to automatically render images from models. Light Camera hi mum Objects model image Computer

More information

AP CS Unit 11: Graphics and Events

AP CS Unit 11: Graphics and Events AP CS Unit 11: Graphics and Events This packet shows how to create programs with a graphical interface in a way that is consistent with the approach used in the Elevens program. Copy the following two

More information

Hanley s Survival Guide for Visual Applications with NetBeans 2.0 Last Updated: 5/20/2015 TABLE OF CONTENTS

Hanley s Survival Guide for Visual Applications with NetBeans 2.0 Last Updated: 5/20/2015 TABLE OF CONTENTS Hanley s Survival Guide for Visual Applications with NetBeans 2.0 Last Updated: 5/20/2015 TABLE OF CONTENTS Glossary of Terms 2-4 Step by Step Instructions 4-7 HWApp 8 HWFrame 9 Never trust a computer

More information

Casting -Allows a narrowing assignment by asking the Java compiler to "trust us"

Casting -Allows a narrowing assignment by asking the Java compiler to trust us Primitives Integral types: int, short, long, char, byte Floating point types: double, float Boolean types: boolean -passed by value (copied when returned or passed as actual parameters) Arithmetic Operators:

More information

RIA Teacher Gradebook Managing Millions of Students with Swing and Web Services: How we did it

RIA Teacher Gradebook Managing Millions of Students with Swing and Web Services: How we did it RIA Teacher Gradebook Managing Millions of Students with Swing and Web Services: How we did it Deane Richan Pearson What we will cover Information about Pearson What's a Gradebook Architecture Overview

More information

Noopur Gupta Eclipse JDT/UI Committer IBM India

Noopur Gupta Eclipse JDT/UI Committer IBM India Noopur Gupta Eclipse JDT/UI Committer IBM India noopur_gupta@in.ibm.com 1 2 3 Show Workspace Location in the Title Bar (-showlocation) OR 4 Show Workspace Name in the Title Bar (Window > Preferences >

More information

Come & Join Us at VUSTUDENTS.net

Come & Join Us at VUSTUDENTS.net Come & Join Us at VUSTUDENTS.net For Assignment Solution, GDB, Online Quizzes, Helping Study material, Past Solved Papers, Solved MCQs, Current Papers, E-Books & more. Go to http://www.vustudents.net and

More information

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

The JFrame Class Frame Windows GRAPHICAL USER INTERFACES. Five steps to displaying a frame: 1) Construct an object of the JFrame class CHAPTER GRAPHICAL USER INTERFACES 10 Slides by Donald W. Smith TechNeTrain.com Final Draft 10/30/11 10.1 Frame Windows Java provides classes to create graphical applications that can run on any major graphical

More information

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2)

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2) Introduction Objective To support interoperability and portability of distributed OO applications by provision of enabling technology Object interaction vs RPC Java Remote Method Invocation (RMI) RMI Registry

More information

Threads Questions Important Questions

Threads Questions Important Questions Threads Questions Important Questions https://dzone.com/articles/threads-top-80-interview https://www.journaldev.com/1162/java-multithreading-concurrency-interviewquestions-answers https://www.javatpoint.com/java-multithreading-interview-questions

More information

Java SE7 Fundamentals

Java SE7 Fundamentals Java SE7 Fundamentals Introducing the Java Technology Relating Java with other languages Showing how to download, install, and configure the Java environment on a Windows system. Describing the various

More information

Arrays, Exception Handling, Interfaces, Introduction To Swing

Arrays, Exception Handling, Interfaces, Introduction To Swing Arrays, Exception Handling, Interfaces, Introduction To Swing Arrays: Definition An array is an ordered collection of items; an item in an array is called an element of the array. By item we mean a primitive,

More information

Graphical Interfaces

Graphical Interfaces Weeks 11&12 Graphical Interfaces All the programs that you have created until now used a simple command line interface, which is not user friendly, so a Graphical User Interface (GUI) should be used. The

More information

Getting Started with Java Development and Testing: Netbeans IDE, Ant & JUnit

Getting Started with Java Development and Testing: Netbeans IDE, Ant & JUnit Getting Started with Java Development and Testing: Netbeans IDE, Ant & JUnit 1. Introduction These tools are all available free over the internet as is Java itself. A brief description of each follows.

More information

MultiThreading 07/01/2013. Session objectives. Introduction. Introduction. Advanced Java Programming Course

MultiThreading 07/01/2013. Session objectives. Introduction. Introduction. Advanced Java Programming Course Advanced Java Programming Course MultiThreading By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City Session objectives Introduction Creating thread Thread class

More information

Project 1. Java Control Structures 1/17/2014. Project 1 and Java Intro. Project 1 (2) To familiarize with

Project 1. Java Control Structures 1/17/2014. Project 1 and Java Intro. Project 1 (2) To familiarize with Project 1 and Java Intro Sharma Chakravarthy Information Technology Laboratory (IT Lab) Computer Science and Engineering Department The University of Texas at Arlington, Arlington, TX 76019 Email: sharma@cse.uta.edu

More information

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

Swing from A to Z Using Focus in Swing, Part 2. Preface Swing from A to Z Using Focus in Swing, Part 2 By Richard G. Baldwin Java Programming, Lecture Notes # 1042 November 27, 2000 Preface Introduction Sample Program Interesting Code Fragments Summary What's

More information

How to be a Good Bean

How to be a Good Bean How to be a Good Bean A JavaBeans component, or simply a Bean, is a reusable software component that can be manipulated visually in a builder tool. The JavaBeans 1.0 architecture specifies how a JavaBeans

More information

Interface Implementation

Interface Implementation Interface Implementation HCI Lecture 11 David Aspinall Informatics, University of Edinburgh 26th October 2007 Outline Overview Software Engineering Usability Engineering Explaining Design Implementation

More information

Advanced Java Programming Course. MultiThreading. By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City

Advanced Java Programming Course. MultiThreading. By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City Advanced Java Programming Course MultiThreading By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City Session objectives Introduction Creating thread Thread class

More information

Introduction to the JAVA UI classes Advanced HCI IAT351

Introduction to the JAVA UI classes Advanced HCI IAT351 Introduction to the JAVA UI classes Advanced HCI IAT351 Week 3 Lecture 1 17.09.2012 Lyn Bartram lyn@sfu.ca About JFC and Swing JFC Java TM Foundation Classes Encompass a group of features for constructing

More information

Programming Language Concepts: Lecture 8

Programming Language Concepts: Lecture 8 Programming Language Concepts: Lecture 8 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in http://www.cmi.ac.in/~madhavan/courses/pl2009 PLC 2009, Lecture 8, 11 February 2009 GUIs and event

More information

Swing from A to Z Some Simple Components. Preface

Swing from A to Z Some Simple Components. Preface By Richard G. Baldwin baldwin.richard@iname.com Java Programming, Lecture Notes # 1005 July 31, 2000 Swing from A to Z Some Simple Components Preface Introduction Sample Program Interesting Code Fragments

More information

Graphic User Interfaces. - GUI concepts - Swing - AWT

Graphic User Interfaces. - GUI concepts - Swing - AWT Graphic User Interfaces - GUI concepts - Swing - AWT 1 What is GUI Graphic User Interfaces are used in programs to communicate more efficiently with computer users MacOS MS Windows X Windows etc 2 Considerations

More information

PROGRAMMING DESIGN USING JAVA (ITT 303) Unit 7

PROGRAMMING DESIGN USING JAVA (ITT 303) Unit 7 PROGRAMMING DESIGN USING JAVA (ITT 303) Graphical User Interface Unit 7 Learning Objectives At the end of this unit students should be able to: Build graphical user interfaces Create and manipulate buttons,

More information

Java for Interfaces and Networks (DT3010, HT10)

Java for Interfaces and Networks (DT3010, HT10) Java for Interfaces and Networks (DT3010, HT10) More on Swing and Threads Federico Pecora School of Science and Technology Örebro University federico.pecora@oru.se Federico Pecora Java for Interfaces and

More information

Recap. Contents. Reenterancy of synchronized. Explicit Locks: ReentrantLock. Reenterancy of synchronise (ctd) Advanced Thread programming.

Recap. Contents. Reenterancy of synchronized. Explicit Locks: ReentrantLock. Reenterancy of synchronise (ctd) Advanced Thread programming. Lecture 07: Advanced Thread programming Software System Components 2 Behzad Bordbar School of Computer Science, University of Birmingham, UK Recap How to deal with race condition in Java Using synchronised

More information

Building Desktop Applications with Java. Eric Bader Vishal Agarwal

Building Desktop Applications with Java. Eric Bader Vishal Agarwal Building Desktop Applications with Java Eric Bader Vishal Agarwal Introductions Who are we? Core Engine Java dev team members. Who are you? ArcGIS Desktop developers/users? MapObjects Java users? Current

More information

Programming Languages 2nd edition Tucker and Noonan"

Programming Languages 2nd edition Tucker and Noonan Programming Languages 2nd edition Tucker and Noonan" Chapter 16 Event-Driven Programming Of all men s miseries the bitterest is this, to know so much and to have control over nothing." " " " " " " "Herodotus

More information

Course: CMPT 101/104 E.100 Thursday, November 23, 2000

Course: CMPT 101/104 E.100 Thursday, November 23, 2000 Course: CMPT 101/104 E.100 Thursday, November 23, 2000 Lecture Overview: Week 12 Announcements Assignment 6 Expectations Understand Events and the Java Event Model Event Handlers Get mouse and text input

More information

Index LICENSED PRODUCT NOT FOR RESALE

Index LICENSED PRODUCT NOT FOR RESALE Index LICENSED PRODUCT NOT FOR RESALE A Absolute positioning, 100 102 with multi-columns, 101 Accelerometer, 263 Access data, 225 227 Adding elements, 209 211 to display, 210 Animated boxes creation using

More information