Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lec 06 Agenda 1/ the 8 rules of Java 2/ Casting primitives 3/ Swing and Threading 4/ Java Event Model. Event api and support for Swing 5/ Swing labs, live.

Similar presentations


Presentation on theme: "Lec 06 Agenda 1/ the 8 rules of Java 2/ Casting primitives 3/ Swing and Threading 4/ Java Event Model. Event api and support for Swing 5/ Swing labs, live."— Presentation transcript:

1 Lec 06 Agenda 1/ the 8 rules of Java 2/ Casting primitives 3/ Swing and Threading 4/ Java Event Model. Event api and support for Swing 5/ Swing labs, live templates, form designer

2 Java entityMay be a reference?May be an instantiated? Concrete ClassYES Abstract ClassYESNO InterfaceYESNO https://www.youtube.com/watch?v=MPITE_Ine-c

3 Fight Club Rules of Java 1/ Only concrete classes can be instantiated.

4 Fight Club Rules of Java 1/ Only concrete classes can be instantiated. 2/ Only concrete classes can be instantiated.

5 Fight Club Rules of Java 1/ Only concrete classes can be instantiated. 2/ Only concrete classes can be instantiated. 3/ The type of any Object must be of type Concrete_class. (corollary to 1 and 2) 4/ References may be concrete, abstract, or interface.

6 Fight Club Rules of Java 5/ You may create type-anonymous abstract- classes and interfaces by overriding ALL their contract methods when you declare them. 6/ The “type” of a type-anonymous class is $x aka Robert Paulson.

7 Swing – and Threading https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html

8 Java Event Model Used to program behavior in GUIs Used extensively in Android.

9 If a tree falls in a forest and no one is around to hear it, does it make a sound?

10

11 Event (onClick) No Event-Listener listening No Catcher Event-Source (Button) No Event Listener

12 Event (onClick) Event-Listener listening Catcher ready to catch Event-Source (Button) ActionList ener Any Object

13 Wrong Event

14 Event source not registered

15 Event (Action) Event-Listener listening Catcher ready to catch Action- Listener Event-Source (Button) Any Object OnMouse- Listener Event (Mouse)

16 Step 1/ define the event-listener object and override the appropriate methods ActionListener mActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //behavior here }}; Step 2/ register (add) the event-listener to the event source. mButton.addActionListener(mActionListener);

17 http://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html http://docs.oracle.com/javase/tutorial/uiswing/events/api.html http://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html

18 Casting Casting down (opening the aperture) is potentially very dangerous and could produce a class-cast-exception. You must be a good free-mason. Casting up (closing the aperture) is called automatic promotion and an explicit cast is not required because a subclass object may always be stored in a superclass reference (or an interface that it implements).

19 Inner and Anonymous Classes In Java7, functions are second class citizens. You can only pass objects around. Though you are captive in the OO paradigm, you can use inner classes and anonymous classes to get around this constraint and write lambda-like code. Lamdas in Java8 replace anonymous inner classes. Often times, no one but the enclosing class cares about an object. In this case, you may consider using inner or anonymous classes.

20 Write a very simple application for a contact manager. The the sake of simplicity, each contact will have a name and a phone number only. The user should be able to create new contacts and diplay all contacts. Create a Latin dictionary with entries for Latin and English equivalents. Store them in a list and allow the user to delete them.

21 Interfaces A class implements an interface rather than extends it. Any class that implements the interface must override all the interface methods with it's own methods. Interface names often end with "able" to imply that they add to the capabilty of the class. An interface is a contract; it defines the methods

22 The ColorSelector GUI App

23 The Leet Translator GUI App

24 http://download.oracle.com/otndocs/products/javafx/2/ samples/Ensemble/index.html#SAMPLES JavaFX From Firefox

25 "If I can't picture it, I can't understand it."

26 Reference anonymous - gravity https://www.youtube.com/watch?v=cEkILY1h6fA Concrete classes: rules of fight club https://www.youtube.com/watch?v=vJMC_S-DB2I Type anonymous : Fight Club - Robert Paulson https://www.youtube.com/watch?v=GCi_PIz5ekU Dubugger: x-men quicksilver https://www.youtube.com/watch?v=WGDXO9mlprM

27 References Objects are like astronauts.

28 References Object objDate = new Date(); This date has a reference. The reference is an Object.

29 Reference Anonymous MyTime myTime = new MyTime(new Date()); The date is reference-anonymous, but we can still get a reference to it myTime.getDate(); new Date(); The date is reference-anonymous and we have no reference to it – it is space-junk and will be garbage collected.

30 Reference Anonymous Date dat1 = new Date(); Date dat2 = new Date(); dat1 = dat2; The Object originally stored in dat1 is orphaned and becomes space junk.

31 Reflection Very useful to inspect the underlying object type. Very useful when first learning an OO language.

32 Reflection Reflection allows you to inspect the type (class) of the implicit parameter at runtime. We will use reflection to gain a deeper understanding of polymorphism and the java event model. Every class has a class object which you can access like so: java.util.Date.class, or like so: Class.forName(strFullyQualifiedClass); See reflection example

33 best video on Form Designer in Intellij (in German, genießen) https://www.youtube.com/watch?v=0I_1HYMUQrg (ok video, no sound, English subtitles) https://www.youtube.com/watch?v=G4jMzEGMKfg How to use the Form Designer in IntelliJ

34 Reflection Name of Driverimplemnts Implicit param EventListener typeDefined TimeTestOuter ActionListener yesEventListenerOuter In separate java file TimeTestInner ActionListener yesEventListenerInnerIn same java file TimeTestLocal ActionListener yesanonymousSame method TimeTestAnon ActionListener noanonymousinline See inner example

35 Layouts in Swing Layouts: https://docs.oracle.com/javase/tutorial/uiswing /layout/border.html https://docs.oracle.com/javase/tutorial/uiswi ng/layout/flow.html http://stackoverflow.com/questions/17083657/ make-bottom-panel-in-borderlayout-to- expand-like-center-panel


Download ppt "Lec 06 Agenda 1/ the 8 rules of Java 2/ Casting primitives 3/ Swing and Threading 4/ Java Event Model. Event api and support for Swing 5/ Swing labs, live."

Similar presentations


Ads by Google