GUI. JavaFX. Java UI, letní semestr 2017/2018 1

Podobné dokumenty
GUI. Systémová integrace pro desktopové aplikace

Programovací jazyk Java. Grafická prostředí v Javě. Přednáška 4 AWT. Základy práce s GUI

JAVA JavaBeans Java, letní semestr 2018

1. díl - Úvod do JavaFX

Iterator & for cyklus

Aplikace s grafickým uživatelským rozhraním

FXML, CSS RICHARD LIPKA

Podmínky na zápočet. Java, zimní semestr

SWT & MigLayout. Alternativy Java GUI v praxi. Pavel Janečka & Tomáš Chlouba. červen 2011

Úvod do JavaFX RICHARD LIPKA

GUI. Systémová integrace pro desktopové aplikace

Programátorská příručka

RMI Remote Method Invocation

Jazyk C# (seminář 9)

JAVA Unit testing Java, zimní semestr

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

1 Platforma JavaFX. 1.1 Historie platformy JavaFX

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

1. Téma 12 - Textové soubory a výjimky

JAVA V RMI Java, letní semestr

Programování v Javě I. Únor 2009

Programování v Javě I. Leden 2008

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Java Výjimky Java, zimní semestr

Algoritmizace a programování

JAVA Moduly Java, letní semestr 2018

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Projekty pro výuku programování v jazyce Java

KTE / ZPE Informační technologie

Základní komponenty JavaFX, Layouty

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

JAVA RMI Java, letní semestr 2018

Úvod do programovacích jazyků (Java)

JAVA JavaBeans Java, letní semestr

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Java a XML. 10/26/09 1/7 Java a XML

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Copyright Rudolf Pecinovský, Soubor: PR_JavaFX_8.0_ _ z 78. JavaFX 8.0. Rudolf Pecinovský

Začínáme s vývojem pro Android

Java Enum Java, zimní semestr ,2017 1

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

Jazyk C# (seminář 6)

Distribuované systémy a výpočty

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Principy objektově orientovaného programování

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Java - výjimky. private void vstup() throws IOException {... }

Java - Kresba. 2/28/11 1/8 Java - kresba

GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky.

Uživatelská rozhraní 10. cvičení. Martin Němec A

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

GUI v Javě a událostmi řízené programování

Dědičnost (inheritance)

Seznam, tabulka, strom

Abstraktní třída a rozhraní

Swing. Přehled komponent. Java UI, letní semestr 2017/2018 1

GUI v Javě. GUI v Javě GUI komponenty a kontejnery Dialogová okna Události a obsluha událostí z GUI

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

GUI v Javě a událostmi řízené programování

JAVA. Java Management Extensions JMX

Bakalářská práce Návrhový modul pro výpočet pevnosti šroubovaných spojů

GUI v Javě a událostmi řízené programování

20. Projekt Domácí mediotéka

Vláknové programování část V

Programování v jazyku C# II. 3.kapitola

Java pro programátory.net

JAVA. Další jazyky kompilovatelné do Java byte-code

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

JAVA GUI Java, zimní semestr

Java Řetězce Java, zimní semestr

Generické programování

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

3 KTE / ZPE Informační technologie

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller

Teoretické minimum z PJV

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Úvod do programovacích jazyků (Java)

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

UJO Framework. revoluční architektura beans. verze

Technologie Java. Jaroslav Žáček

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Java aplety. Předávání parametrů z HTML

1. Programování proti rozhraní

PREPROCESOR POKRAČOVÁNÍ

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

JAVA. Krátce o Reflection API

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální

Transkript:

GUI JavaFX 1

Přehled Java GUI Java 1.0 (1996) AWT použití nativních GUI komponent Java 1.2 (2000) Swing kompletní GUI v Javě JavaFX (2007) nová technologie běžící nad Java VM ale vlastní jazyk deklarativní zamýšleno jako konkurence pro Flash neujalo se JavaFX 2.0 (2011) zůstalo pouze API (jazyk zahozen) od JDK 7 update 6 součást std JDK (JavaFX 2.2) JDK 8 JavaFX 8 žádný další vývoj Swingu JDK 11 JavaFX bude oddělena z JDK

Hello World public class HelloWorld extends Application { } @Override public void start(stage stage) { Label message = new Label("Hello, JavaFX!"); message.setfont(new Font(100)); stage.setscene(new Scene(message)); stage.settitle("hello"); stage.show(); } žádný J prefi // žádný main()

Hello World ve starších verzích bylo potřeba main() přidat explicitně public class MyApp extends Application { public static void main(string[] args) { launch(args); }... }

Struktura aplikace Stage Scene Scene graph

Události podobně jako ve Swingu/AWT ALE typicky se poslouchá na změny vlastností tj. neposlouchá se přímo na komponentě existují výjimky, např. tlačítko Slider slider = new Slider(10, 100, 100); Label message = new Label("Hello, JavaFX!"); slider.valueproperty().addlistener(property -> message.setfont(new Font(slider.getValue())));

Vlastnosti komponent (properties) interface Property<T> void addlistener(invalidationlistener listener) void addlistener(changelistener<? super T> listener) void bind(observablevalue<? extends T> observable) void bindbidirectional(property<t> other) implementace class ObjectProperty<T> class IntegerProperty class BooleanProperty class StringProperty...

Vlastnosti příklad implementace private StringProperty text = new SimpleStringProperty(""); public final StringProperty textproperty() { return text; } public final void settext(string newvalue){ text.set(newvalue); } public final String gettext() { return text.get(); }

Vlastnosti listenery InvalidationListener volá se pokud současná hodnota vlastnosti přestala platit umožňuje líné vyhodnocení void invalidated(observable observable) ChangeListener volá se při změně hodnoty vlastnosti je potřeba spočítat i novou hodnotu tj. neumožňuje líné vyhodnocení void changed(observablevalue<? extends T> observable, T oldvalue, T newvalue)

Vlastnosti propojování binding automatické aktualizování vlastnosti při změně jiné vlastnosti interně implementováno pomocí listenerů text1.textproperty().bind(text2.textproperty()); text1.textproperty().bindbidirectional( text2.textproperty()); třída Bindings statické metody pro snadné vytváření propojení

Layout vytvoření rozložení (layout) komponent JavaFX Scene Builder naklikání GUI ručně vytváření instancí komponent definice v FXML podobné jako ve Swingu panely (panes) místo layout managerů

Layout BorderPane (jako BorderLayout) HBox VBox GridPane (jako GridBagLayout) TilePane (jako GridLayout) VBox pane = new VBox(); pane.getchildren().addall(button1, button2,); pane.setpadding(new Insets(10));

FXML <?import java.net.*?> <?import javafx.geometry.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.text.*?> <GridPane fx:controller="fxmlexample.fxmlexamplecontroller" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> <padding><insets top="25" right="25" bottom="10" left="25"/></padding> <Text text="welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> <Label text="user Name:" GridPane.columnIndex="0" GridPane.rowIndex="1"/>...

FXML použití public void start(stage stage) { try { Parent root = FXMLLoader.load(getClass(). getresource("file.fxml")); stage.setscene(new Scene(root)); stage.show(); } catch (IOException ex) { ex.printstacktrace(); System.exit(0); } }

FXML přidání listenerů/propojení a) <TextField id="username" TextField username = (TextField) root.lookup("#username"); b) <GridPane xmlns:fx="http://javafx.com/fxml" hgap="10" vgap="10" fx:controller="logindialogcontroller"> <Button fx:id="okbutton" text="ok" /> public class LoginDialogController implements Initializable { @FXML private TextField username; @FXML private Button okbutton; public void initialize(url url, ResourceBundle rb){ okbutton.disableproperty().bind(...

CSS vzhled UI lze nastavit pomocí CSS Scene scene = new Scene(pane); scene.getstylesheets().add("scene.css"); používají se JavaFX specifické atributy #pane { -fx-padding: 0.5em; -fx-hgap: 0.5em; -fx-vgap: 0.5em; -fx-background-image: url("bg.jpg") }

Animace apod. ScaleTransition ScaleTransition st = new ScaleTransition(Duration.millis(3000)); st.setbyx(1.5); st.setbyy(1.5); st.setnode(button); st.setcyclecount(animation.indefinite); st.setautoreverse(true); st.play(); FadeTransition RotateTransition DropShadow...

Přehled komponent Accordion Button CheckBox ChoiceBox ColorPicker ComboBox DatePicker Label ListView Menu MenuBar PasswordField ProgressBar RadioButton Slider Spinner SplitMenuButton SplitPane TableView TabPane TextArea TextField TitledPane ToggleButton ToolBar TreeTableView TreeView

Grafy (charts) BarChart BubbleChart LineChart PieChart ScatterChart StackedAreaChart StackedBarChart

Další WebView zobrazení HTML založeno na WebKit přehrávání videa...

Úkol Vytvořte jednoduchý textový editor s menu načtení, uložení, zobrazí statistiky o textu v grafu

Java UI, letní Verze semestr prezentace 2017/2018 JU5.cz.2018.01 Tato prezentace podléhá licenci Creative Commons Uveďte autora-neužívejte komerčně 4.0 Mezinárodní License. 23