Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è...

55
Costruttori

Transcript of Costruttori - UniTrentolatemar.science.unitn.it/.../5_JavaFXIntro.pptx.pdf• Un metodo astratto è...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ParenthierarchyParent•  Control

– superclassedivariwidget,tracuiFileChooser

•  Group•  Region•  WebView

ARegionisanareaofthescreenthatcancontainothernodes WebViewisaNodethatmanagesaWebEngineanddisplaysitscontent.

(lovediamotrapoco)