costruttori - unitrentolatemar.science.unitn.it/.../5_javafxintro.pptx.pdf• un metodo astratto è...
TRANSCRIPT
![Page 1: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/1.jpg)
Costruttori
![Page 2: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/2.jpg)
Definizionedeicostruttori
• SeperunaclasseAnonscrivonessuncostruttore,ilsistemaautomaticamentecreailcostruttoreA();
• Seinvecedefiniscoalmenouncostruttorenonvoid,ades.A(ints),ilsistemanoncreailcostruttoreA();
![Page 3: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/3.jpg)
Definizionedeicostruttori• SeBèfigliadiA,ilcostruttorediBcomeprimacosainvocaA(),amenochelaprimaistruzionenonsiaunasuper.
A(intk){...}
A(){...}
B(intk){… }B(intk){super(k);}
A
B
![Page 4: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/4.jpg)
Invocazionedeicostruttoripublic class A { public A() { System.out.println("Creo A"); } } public class B extends A { public B() { System.out.println("Creo B"); } public B(int k) { System.out.println("Creo B_int”); } }
Caso1.Qualèl’output?
public static void main(String [] a) { B b=new B(1); }
![Page 5: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/5.jpg)
Invocazionedeicostruttoripublic class A { public A(int k) { System.out.println("Creo A"); } } public class B extends A { public B() { System.out.println("Creo B"); } public B(int k) { System.out.println("Creo B_int”); } }
public static void main(String [] a) { B b=new B(1); }
Caso2.Qualèl’output?
![Page 6: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/6.jpg)
Invocazionedeicostruttoripublic class A { public A(int k) { System.out.println("Creo A"); } } public class B extends A { public B() { System.out.println("Creo B"); } public B(int k) { super(k); System.out.println("Creo B_int”); } } public static void main(String [] a) {
B b=new B(1); }
Caso3.Qualèl’output?
LachiamataasuperDEVE
esserelaprimaistruzione!
![Page 7: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/7.jpg)
Chiamataadaltrocostruttoredellastessaclasse
public class P { float[] x; public P(int k) { x=new float[k]; } public P() { this(100); }
LachiamataathisDEVE
esserelaprimaistruzione!
![Page 8: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/8.jpg)
Classiastratte
![Page 9: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/9.jpg)
Classiemetodiastratti• Unmetodoastrattoèunmetodoperilquale
nonèspecificataalcunaimplementazione• Unaclasseastrattaètalesecontienealmeno
unmetodoastratto• Classiemetodiastrattisonodefinititali
mediantelaparolachiaveabstract • Nonèpossibilecreareistanzediunaclasse
astratta:bisognadefinireunalorosottoclasse,cheneimplementaimetodiastratti
• Leclassiastrattesonomoltoutiliperintrodurreastrazionidialtolivello
![Page 10: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/10.jpg)
Pila,Coda,eclassiastratteabstract public class ArrayDati { int size; int defaultGrowthSize; int marker; int contenuto[]; abstract public int estrai(); … // implementazione altri metodi } public class Pila extends ArrayDati { public int estrai() { … } } public class Coda extends ArrayDati { public int estrai() { … } }
ArrayDati
Pila Coda
![Page 11: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/11.jpg)
PalestradiJavaconlagrafica:JavaFX-parte1
![Page 12: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/12.jpg)
CreazionediunaapplicazioneJavaFX
![Page 13: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/13.jpg)
JavaFXpublicclassJavaFXApplicationTESTextendsApplication{@Overridepublicvoidstart(StageprimaryStage){Buttonbtn=newButton();btn.setText("Say'HelloWorld'");btn.setOnAction(newEventHandler<ActionEvent>(){@Overridepublicvoidhandle(ActionEventevent){System.out.println("HelloWorld!");}});StackPaneroot=newStackPane();root.getChildren().add(btn);
Scenescene=newScene(root,300,250);primaryStage.setTitle("HelloWorld!");primaryStage.setScene(scene);primaryStage.show();}publicstaticvoidmain(String[]args){launch(args);}}
![Page 14: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/14.jpg)
JavaFXpublicclassJavaFXApplicationTESTextendsApplication{@Overridepublicvoidstart(StageprimaryStage){Grouproot=newGroup();Scenescene=newScene(root,300,250);scene.setFill(Color.AQUAMARINE);primaryStage.setTitle("HelloWorld!");primaryStage.setScene(scene);primaryStage.show();}publicstaticvoidmain(String[]args){launch(args);}}
![Page 15: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/15.jpg)
Attenzioneaimportareilpackagegiusto!
![Page 16: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/16.jpg)
Stage/Scene/Parent/Node
Stage=“finestra”• UnoStagecontieneunaScene• UnaScenehaunParent• UnParentèunNode…• …maunNodehaunParent
Finestra Contenitore Contenuto
![Page 17: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/17.jpg)
Group–Shape-Circle
uncerchioconraggioecentrospecificati,misuratiinpixel
classeastratta,baseperunaseriediclassicherappresentanoformegeometriche
![Page 18: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/18.jpg)
Applicazioneminimaimport javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Circle; import javafx.stage.Stage; public class MinimalApp extends Application { public void start(Stage stage) { Circle circ = new Circle(40, 40, 30); Group root = new Group(circ); Scene scene = new Scene(root, 400, 300); stage.setTitle("My JavaFX Application"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }
![Page 19: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/19.jpg)
Applicazioneminimaimport javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Circle; import javafx.stage.Stage; public class MinimalApp extends Application { public void start(Stage stage) { Node circ = new Circle(40, 40, 30); Parent root = new Group(circ); Scene scene = new Scene(root, 400, 300); stage.setTitle("My JavaFX Application"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }
SuperclasseaSxdell’uguale!
![Page 20: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/20.jpg)
Applicazioneminimaimport javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Circle; import javafx.stage.Stage; public class MinimalApp extends Application { public void start(Stage stage) { Circle circ = new Circle(40, 40, 30); Group root = new Group(); root.getChildren().addAll(circ); Scene scene = new Scene(root, 400, 300); stage.setTitle("My JavaFX Application"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }
Modoalternativodiaggiungerecomponenti
![Page 21: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/21.jpg)
Quandoterminal’esecuzione?• Ilprocessoassociatoaun’applicazioneJavaFXrimaneattivoanchedopolafinedistart()– l’applicazionevaesplicitamenteterminate– unprocessoèunprogrammainesecuzione,conilsuostato
![Page 22: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/22.jpg)
UserInput
![Page 23: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/23.jpg)
Userinput– senzagraficaimportjava.util.Scanner;...Scannerscanner=newScanner(System.in);System.out.println(”dimmiqualcosa");StringinputString=scanner.nextLine();...System.out.println(inputString);
![Page 24: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/24.jpg)
Userinput–congraficaAlert alert = new Alert(AlertType.INFORMATION); alert.setTitle("Alert Title"); alert.setHeaderText("Alert header:"); alert.setContentText("Alert Text"); alert.showAndWait();
![Page 25: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/25.jpg)
Userinput–congraficaTextInputDialog dialog = new TextInputDialog("Default answer");
dialog.setTitle("Dialog Title"); dialog.setHeaderText("Dialog header"); dialog.setContentText("Answer label:"); String s= dialog.showAndWait().get();
Nonèproprioilmodogiustoperfarlo,maperora…
![Page 26: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/26.jpg)
Conversionedistringheinnumeri
![Page 27: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/27.jpg)
Conversionedistringheinnumeri
Strings="10";inti=Integer.parseInt(s);Stringpi="3.1415026535";floatπ=Float.parseFloat(pi);ChesuccedesefaccioStrings=”pippo";inti=Integer.parseInt(s);
?
![Page 28: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/28.jpg)
Errore!ExceptioninApplicationstartmethodjava.lang.reflect.InvocationTargetException
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atcom.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)atcom.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atsun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Causedby:java.lang.RuntimeException:ExceptioninApplicationstartmethodatcom.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)atcom.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)atjava.lang.Thread.run(Thread.java:745)
Causedby:java.lang.NumberFormatException:Forinputstring:"z"atsun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)atsun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)atjava.lang.Float.parseFloat(Float.java:451)atjavafxapplication27.JavaFXApplication27.start(JavaFXApplication27.java:36)atcom.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)atcom.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)atcom.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)atjava.security.AccessController.doPrivileged(NativeMethod)atcom.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)atcom.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
Exceptionrunningapplicationjavafxapplication27.JavaFXApplication27
![Page 29: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/29.jpg)
Gestionedeglierrori
![Page 30: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/30.jpg)
Proteggiamoquestocodice
Scannerscanner=newScanner(System.in);StringinputString;intz;System.out.println("dammiunnumero");inputString=scanner.nextLine();z=Integer.parseInt(inputString);System.out.println("inputvalido!");
![Page 31: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/31.jpg)
Bloccotry-catchScannerscanner=newScanner(System.in);StringinputString;intz;System.out.println("dammiunnumero");inputString=scanner.nextLine();try{
intz=Integer.parseInt(inputString);System.out.println("inputvalido!");}catch(NumberFormatExceptionex){System.out.println("inputnonvalido!");}
![Page 32: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/32.jpg)
PossiamofaredimeglioScannerscanner=newScanner(System.in);StringinputString;intz;booleanfailure=true;do{try{System.out.println("dammiunnumero");inputString=scanner.nextLine();intz=Integer.parseInt(inputString);failure=false;}catch(NumberFormatExceptionex){
failure=true;}}while(failure);
![Page 33: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/33.jpg)
ClausolafinallyNota:c’èunaulterioreclausola!try{codicechepotrebbegenerareerrore}catch(NumberFormatExceptionex){
codicedaeseguiresesiverificaunerrore}finally{codicedaeseguiresiachecisiastatounerrore,siachenoncisiastato.}
![Page 34: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/34.jpg)
finally
Thefinallyblockalwaysexecuteswhenthetryblockexits.Thisensuresthatthefinallyblockisexecutedevenifanunexpectedexceptionoccurs.Butfinallyisusefulformorethanjustexceptionhandling—itallowstheprogrammertoavoidhavingcleanupcodeaccidentallybypassedbyareturn,continue,orbreak.Puttingcleanupcodeinafinallyblockisalwaysagoodpractice,evenwhennoexceptionsareanticipated.
![Page 35: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/35.jpg)
Esercizio
![Page 36: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/36.jpg)
EserciziopercasaModificareilcodicechedisegnaundisco,inmodochedopoaverdisegnatolafinestraconilcerchio(dopolastage.show()),all’utentevengachiestotramiteunDialogilvaloredelraggio,esimodifichiilcerchiousandoilvaloredato.Sigestiscanoerrori,esipongaunlimiteminimoemassimoaivaloriaccettatiperilraggio.
![Page 37: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/37.jpg)
Informationhiding:visibilità
![Page 38: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/38.jpg)
InformationhidinginJava• LavisibilitàdegliattributiemetodidiunaclasseCpuòessere:
• public• visibili a tutti • vengono ereditati
• protected • visibili solo alle sottoclassi • vengono ereditati
• «package» (nessun modificatore specificato) • visibili solo alle classi dichiarate nel package di C
• private • visibili solo all’interno della stessa classe • non visibili nelle sottoclassi
![Page 39: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/39.jpg)
Modificatoridivisibilità
visibilità
modificatore classe package sottoclasse mondo
private Y N N N
“package” Y Y N N
protected Y Y Y N
public Y Y Y Y
![Page 40: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/40.jpg)
PalestradiJavaconlagrafica:JavaFX-parte2
![Page 41: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/41.jpg)
Shape&Text
unnodochevisualizzatesto;supportaacapo(wrapping)eparagrafiseparatida'\n'
![Page 42: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/42.jpg)
GerarchiadiShapeLeseguenticlassiimplementanoShape • Line • Polyline • Polygon • Rectangle • Arc • Circle • Ellipse • QuadCurve • CubicCurve • Text • SVGPath (lineacompostadisottoelementi)
![Page 43: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/43.jpg)
Esempio:Finestremultiple
![Page 44: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/44.jpg)
Finestremultiple:primafinestra public class Finestre extends Application { public void start(Stage stage) {
Text t=new Text(50, 100, "The quick brown fox jumps over the lazy dog");
t.setTextAlignment(TextAlignment.RIGHT); t.setWrappingWidth(50); t.setFill(Paint.valueOf("GREEN")); Group g = new Group(t); Scene scene = new Scene(g); stage.setTitle("Titolo della finestra 1"); stage.setScene(scene); // set stage dimension stage.setWidth(399);
stage.setHeight(399); // set stage position
stage.setX(1000); stage.setY(800); // make stage visible stage.show();
![Page 45: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/45.jpg)
Finestremultiple:secondafinestra Text t2=new Text(0, 20, "Ping !\nPongPing !"); t2.setTextAlignment(TextAlignment.LEFT); t2.setFill(Paint.valueOf("RED")); t2.setFont(new Font(20));
Group g2 = new Group(t2); Scene scene2 = new Scene(g2); scene2.setFill(Paint.valueOf("YELLOW")); Stage stage2 = new Stage(); stage2.setTitle("Titolo della finestra 2"); stage2.setScene(scene2);
stage2.sizeToScene(); stage2.setX(100); stage2.setY(80); stage2.show();
} public static void main(String[] args) { launch(args); } }
![Page 46: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/46.jpg)
Nodehierarchy
Node• Parent• Shape• Canvas
![Page 47: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/47.jpg)
Canvas
Una"teladelpittore"conunmetodoperottenereilsuoGraphicContextconvarieprimitiveperdisegnarcisopra:- fillArc() - fillRect() - drawImage() - …http://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm
![Page 48: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/48.jpg)
GerarchiadiNode
Node• Parent• Shape• Canvas• ImageView• MediaView
![Page 49: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/49.jpg)
ImageView&Image
![Page 50: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/50.jpg)
GerarchiadiParent(parziale)Parent• Control
– superclassedivariwidget,tracuiFileChooser
• …
![Page 51: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/51.jpg)
Image&File
public class FilesAndImages extends Application { public void start(Stage stage) {
FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Carica un'immagine");
fileChooser.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("JPG", "*.jpg"), new FileChooser.ExtensionFilter("PNG", "*.png") ); String url = System.getProperty("user.home"); File f=new File(url);
fileChooser.setInitialDirectory(f); // bugged on MacOsXFile file = fileChooser.showOpenDialog(stage);
if (file == null) { System.out.println("No file chosen"); System.exit(1); }
![Page 52: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/52.jpg)
Image&FileImage image = new Image("file://" +
file.getAbsolutePath(), 500, 500, true, true); ImageView iw = new ImageView(image); Group root = new Group(iw); Scene scene = new Scene(root, 500,500); stage.setTitle(file.getName()); stage.setScene(scene); stage.sizeToScene(); stage.show(); }
public static void main(String[] args) { Application.launch(args); }}
![Page 53: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/53.jpg)
MediaView&Media
![Page 54: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/54.jpg)
MediaViewpublic class Sounds extends Application{ public void start(Stage stage) {
Media media = new Media("http://www.ferraraterraeacqua.it/it/audioguide/audioguide-di-ferrara-citta-del-rinascimento/01_benvenuto-a-ferrara.mp3"); MediaPlayer mediaPlayer = new MediaPlayer(media); mediaPlayer.setAutoPlay(true); // create mediaView and add media player to the viewer MediaView mediaView = new MediaView(mediaPlayer); Group root = new Group(mediaView); root.getChildren().add(
new Text(10, 30,"Benvenuto a Ferrara")); Scene scene = new Scene(root, 150, 60); stage.setScene(scene);
stage.sizeToScene(); stage.show(); } public static void main(String[] args) { Application.launch(args); } } http://docs.oracle.com/javafx/2/media/overview.htm
![Page 55: Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è un metodo per il quale non è specificata alcuna implementazione • Una classe](https://reader036.vdocuments.pub/reader036/viewer/2022070219/612d4eed1ecc515869421bca/html5/thumbnails/55.jpg)
ParenthierarchyParent• Control
– superclassedivariwidget,tracuiFileChooser
• Group• Region• WebView
ARegionisanareaofthescreenthatcancontainothernodes WebViewisaNodethatmanagesaWebEngineanddisplaysitscontent.
(lovediamotrapoco)