Seznam, tabulka, strom

Rozměr: px
Začít zobrazení ze stránky:

Download "Seznam, tabulka, strom"

Transkript

1 Seznam, tabulka, strom RICHARD LIPKA

2 Properties JavaBean třída, která nese data objektu Všechny atributy neveřejné (private) Přístup k atributům přes get (), set (), is () a Bean() metody stejné jméno jako atribut Takový atribut se označuje jako Property (vlastnost) Snadný automatický přístup podle jména (viz CellValueFactory a podobné objekty později) Sousta automaticky generovaného kódu využít prostředky IDE Konstruktor bez parametrů Po vytvoření je objekt neinicializovaný, nutné ho nastavit jeho settry JavaBean by měla být schopna naslouchat událostem a generovat zprávy pro ostatní objekty Observable observer pattern V Jave API pro tvorbu JavaBean java.beans package, javafx.beans package použití v JavaFX

3 JavaFX beany - Property Velmi často použity pro reprezentaci dat (modely) Označovány jako Property slouží jako atributy metod JavaFX Obvykle typováno na data která jsou v Property uložena Mohou mít přiřazené jméno Umožňují sledování svých hodnot, potomek Rozhraní Observable, ObservableValue<T> - manipulace s posluchači, získání hodnoty Rozhraní WritableValue<T> pro zápis a získání hodnoty Rozhraní Property<T> pro binding spojení hodnot dvou objektů Implementace hotové třídy pro všechny základní objekty Property, ReadOnly Property abstraktní Simple Property lze vytvářet instance, má inicializační konstruktory

4 Simple Property Primitivní datové typy typované na příslušný typ SimpleBooleanProperty SimpleDoubleProperty SimpleFloatProperty SimpleIntegerProperty SimpleLongProperty Objekty SimpleStringProperty SimpleObjectProperty nastavení většiny vlastností JavaFX objektů (pozice, zarovnáni, editovatelnost, sloupce tabulky,.) Kolekce typované na typ dat v kolekci SimpleListProperty<E> implementuje ObservableList<E> SimpleMapProperty<K, V> SimpleSetProperty<E>

5 Definice vlastní property (?abstract?) class Account { private DoubleProperty amountdue = new SimpleDoubleProperty(); nejde překrýt potomek ji musí využít public final double getamountdue() { return amountdue.get(); public final void setamountdue(double value){ amountdue.set(value); public DoubleProperty amountdueproperty() { return amountdue;

6 Práce s vlastní property Data zapouzdřena v objektu odvozeném z Simple Property všechny změny prováděny v něm Lze snadnou naslouchat jeho změnám Account personalaccount = new Account(); personalaccount.amountdueproperty().addlistener(new ChangeListener(){ public void changed(observablevalue o, Object oldval, Object newval){ System.out.println( Account has changed!"); );

7 Binding Umožňuje provázat dvě Property, tak aby se změna jedné projevila Základní propojení Metoda bind(observablevalue()) int1.bind(int2) změna int2 se projeví v int1 (stejná hodnota getvalue()) int1 nemohu nastavit jen ukazuje na int2 Property ví jestli je jen svázaná (int1) nebo jestli obsahuje hodnotu (int2) Lze testovat přes isbound() jen int1 je svázaná Obousměrné propojení Metoda bindbidirectional(property) int1.bindbidirectional(int2) mohu měnit int1 i int2 a změna se propaguje oběma směry

8 Skládané objekty High level API Lze vytvářet objekty třídy Bindings, které obsahují automaticky aktualizovaný výsledek vzorce IntegerProperty num1 = new SimpleIntegerProperty(1); IntegerProperty num2 = new SimpleIntegerProperty(2); NumberBinding sum = num1.add(num2); V sum bude vždy součet num1 a num2 sum lze použít pro sestavení dalších vzorců NumberBinding mult = sum.multiply(num2) API obsahuje metody pro všechny základní aritmetické operace

9 Skládané objekty Low level API Pokud nestačí základní aritmetika je možné definovat si vlastní vzorce Sada tříd Binding pro primitivní číselné typy V inicializačním bloku je nutné nastavit všechny Property použité pro výpočet Inicializační blok statický nebo dynamický, dynamický vložen do každého konstruktoru V metodě computevalue() samotný výpočet DoubleProperty a = new SimpleDoubleProperty(1); DoubleProperty b = new SimpleDoubleProperty(2); DoubleBinding db = new DoubleBinding() { { super.bind(a, b, c, d); protected double computevalue() { return (Math.sin(a.get()) * Math.cos(b.get())); ;

10 Seznam (ListView<T>) Zobrazení seznamu Typováno typ položek v modelu který je zobrazován Zobrazuje model Spojen s ObservableList<T> Pro výpis použita metoda tostring() ListView<String> listview = new ListView<String>(); ObservableList<String> items = FXCollections. observablearraylist ("Single", "Double", "Suite", "Family App"); list.setitems(items); Lze nastavit vertikální nebo horizontální podobu

11 Druhy výběru (SelectionModel) Nastavení co je možné vybrat getselectionmodel().setsele ctionmode(selectionmode) SelectionModel.SINGLE SelectionModel.MULTIPLE Získání vybraných prvků getselectionmodel(). getselectedindices() seznam indexů getselecteditems() seznam prvků Vrácené seznamy aktualizované, jen pro čtení

12 Zpracování výběru Od verze 8.40 funguje, opraveno removeall(collection) i s částí téže kolekce V čemkoliv starším se to bude chovat divně musíte provést mazání s kopií ObservableList<Person> selectioncopy = FXCollections.observableArrayList (personview.getselectionmodel().getselecteditems()); Mazání označeného prvku posouvá označení personview.getselectionmodel().clearselection(); Při čtení výběru problémy nejsou

13 Přidávání prvků Vkládat do původní kolekce ListView se aktualizuje automaticky Pokud není dostupná, lze ji získat přes getitems() Metody add(item) add(index, Item) posouvá zbytek kolekce, index musí být uvnitř stávající kolekce addall(collection) vkládání celé další kolekce

14 Buňka Dostane prostor uvnitř seznamu a může ho využít podle sebe Defaultně implementována pomocí Label / TextField Musí rozumět datům které zobrazuje nebo upravuje a být s nimi propojena Defaultně využívá tostring() nebo binding, pokud je to možné Musí umět zobrazit prázdný řádek (doplnit komponentu) Dva režimy Zobrazovací (renderer) vykreslení dat tostring() převádí data do zobrazitelné podoby Editační (editor) úprava dat, vstup od uživatele Je možné data získat z textového / poskytnutého vstupu? Komponenta zajišťuje přepínání režimů, implementace buňky musí zajistit zobrazení Pozor, na akce které přepínání režimů obejdou / nevynutí

15 Buňky (ListCell<T>) Každý řádek je vykreslován jednou buňkou Typovány na obsah, stejně jako ListView Je možné vytvořit vlastní buňku Musí být potomek ListCell, hodí se znát typ dat která má zobrazovat private class MyCell extends ListCell<Person> { public void updateitem(person item, boolean empty) { super.updateitem(item, empty); if (item!= null) { settext(item.getname()); personview.setcellfactory(new Callback<ListView<Person>, ListCell<Person>>() { public ListCell<Person> call(listview<person> param) { return new MyCell(); );

16 Editovatelné buňky (pro String) Připraveno několik typů buněk (CheckBoxListCell, ComboBoxListCell, TextFieldListCell, ) a pro ně továrny Je možné je použít rovnou Má defaultní implementaci pro uložení hodnoty do kolekce, lze překrýt vlastní obsluhou Použití s kolekcí String personview.setcellfactory(textfieldlistcell.forlistview()); personview.seteditable(true); personview.setoneditcommit(event -> personview.getitems().set(event.getindex(), event.getnewvalue())); personview.setoneditcancel(event -> {);

17 Editovatelné buňky Pokud v seznamu není String, lze použít StringConverter<T> Potřebuje metody tostring() i fromstring() personview.seteditable(true); personview.setcellfactory(textfieldlistcell.forlistview (new StringConverter<Person>() { public Person fromstring(string string) { return new Person(string); )); public String tostring(person object) { return object.getname(); Pozor, konvertor nemá referenci na ukládané objekty vytváří nový! Ve vlastní obsluze je možné ho využít k nastavení změněné hodnoty

18 Vlastní buňka CellFactory může vracet libovolnou buňku, může vracet různé buňky podle objektů v seznamu Platí pro seznamy, tabulky i stromy stejné buňky Je potřeba překrýt implementaci public void updateitem(t item, boolean empty)- vznik buňky pro vykreslení Minimálně tohle je třeba překrýt vždy Testovat jestli v item něco je public void startedit() vznik buňky pro editaci Přes setgraphics() lze vložit vlastní uzel provádějící editaci Je třeba zajistit reakci na potvrzení editace (ENTER) volat commitedit(t) public void canceledit() obnovení stavu po editaci Nezapomenout odstranit grafiku editace

19 Tabulka (TableView<S>) Zobrazení strukturovaných dat Vnitřně složena ze sloupců (TableColumn), řádek (TableRow) a buněk (TableCell) Sloupce se dají vnořovat do sebe Model založený na ObservableList<S> Je třeba zajistit mapování sloupců na položky v kolekci Tabulka typována na typ obsahu Lze nastavit table.getselectionmodel().setselectionmode (SelectionMode.MULTIPLE);

20 Sloupce (TableColumn<S, T>) Sloupce se definují při tvorbě tabulky Typovány na typ obsahu tabulky a sloupce TableView table = new TableView(); TableColumn firstnamecol = new TableColumn("First Name"); TableColumn col = new TableColumn(" "); TableColumn first col = new TableColumn("Primary"); TableColumn second col = new TableColumn("Secondary"); col.getcolumns(). addall(first col, second col); table.getcolumns(). addall(firstnamecol, col);

21 Datový model V kolekci musí být objekty s metodami get() a set() pro všechny zobrazované atributy Java Bean neveřejné atributy, veřejné getry a setry, bezparametrický konstruktor, serializovatelné; ideálně Property Nám stačí getry, setry a property Nastavení modelu přes setitems() Pro každý sloupec je třeba nastavit zdroj dat setcellvaluefactory<s, T>(property) firstnamecol.setcellvaluefactory (new PropertyValueFactory<Person, String>("name")); z name automaticky dohledá getname() metodu a využije ji k nastavení hodnoty v buňce (reflexe) Pokud metoda neexistuje, nic se nestane ( těžší hledání chyb)

22 Datový model - ukázka public class Person { private StringProperty name; public Person(String name) { super(); this.name = new SimpleStringProperty(name); public final String getname() { return name.get(); public final void setname(string name) { this.name.set(name);; public StringProperty nameproperty() { return name;

23 Datový model - property Pozorovatelné kdokoliv ví o jejich změnách Property slouží jen jako wrapper kolem skutečných dat Základní property jednoduché (uvnitř jen jedna proměnná) Složitější s objektovými property SimpleObjectProperty<T> Wrapper kolem objektu T Reaguje jen na vložení nového objektu SimpleListProperty<T> Potřebuje v konstruktoru dostat ObservableList<T> s prvky T Reahuje jen na vložení dat do seznamu, ne na změny dat uvnitř T

24 Řazení ve sloupci Tabulka automaticky řadí data ve sloupcích Po kliknutí na záhlaví sloupce Přirozené řazení, podle typu dat ve sloupci Řazení lze ovlivnit setsortable(false) zakáže / povolí řazení setsorttype(tablecolumn.sorttype.descending) nastavení směru řazení Sloupci lze nastavit komparátor setcomparator(comparator<t>) Má přístup jen k datům sloupce tomu co získá z CellValueFactory Nahrazuje výchozí komparátor

25 Chování tabulky Rozšiřování Tabulka umí vyplnit dostupný prostor tabletv.setcolumnresizepolicy( TableView.CONSTRAINED_RESIZE_POLICY); UNCONSTRAINED_RESIZE_POLICY Lze si napsat vlastní ResizePolicy nutné pro každý sloupec sestavit ResizeFeature<S> s jeho velikostí většinou stačí výchozí policy Řazení celé tabulky Lze provádět přes řazení kolekce FXCollections.sort(tableView.getItems()) Lze nastavit styl řazení (setsortpolicy()) Callback ve kterém se vyvolá řazení Užitečné pokud má řazení zajistit někdo jiný (databáze)

26 Editace buněk Funguje podobně jako u ListView Nutné nastavit buňky podporující editaci firstnamecol.setcellfactory (TextFieldTableCell.forTableColumn()); Nastavení obsluhu při úpravě buňky (není nutné při použití property) firstnamecol.setoneditcomit(event -> { ((Person) event.gettableview().getitems().get( event.gettableposition().getrow()) ).setname(event.getnewvalue()); ); Pozor, bez nastavení obsluhy se změna sice propaguje do buňky (u předem připravených buněk), ale ne do modelu Pozor, lambda výrazy fungují jen pokud jsou sloupce důsledně typovány (event je typu <CellEditEvent<Person, String>> )

27 Existující buňky (potomci TableCell) Potomci IndexedCell Lze získat index (pořadí v kolekci) getindex() Pro sudost a lichost také rozhraní Stylable getpseudoclassstates().contains (PseudoClass.getPseudoClass("even")) (PseudoClass.getPseudoClass("odd")) Existující buňky a továrny CheckBoxTableCell ChoiceBoxTableCell ComboBoxTableCell ProgressBarTableCell TextFieldTableCell Obecně typované nemusí zobrazovat String, ale jakýkoliv objekt (stejný typ jako sloupec!) U textových je možné nastavit StringConverter, u seznamů seznam položek (tovární metoda fortablecolumn()) Updatují automaticky editor a renderer, ale ne datový model!

28 Vytvoření vlastní buňky Potomek TableCell<S, T> Rovnou typovat na data která má zobrazovat (může být napsána obecně - složitější) Vždy má textové pole pro zobrazení řetězce (Label) Spojena se zobrazovaným prvkem (getitem()) 2 režimy editační a zobrazovací TableCell umí zajistit přepínání Zajistit zobrazení vlastních komponent typicky má privátní editor a renderer (nebo jen editor) Je třeba zajistit Načtení dat z modelu Zobrazení správné komponenty v obou režimech Nastavení dat do editační a zobrazovací komponenty Propagaci dat z buňky do modelu

29 Kostra buňky Vlastní editor a obsluha jeho událostí rozhodnutí o commit a cancel public class TextFieldCell extends TableCell<Person, String>{ private TextField texttf; private void createeditor() { texttf = new TextField(); texttf.setonkeyreleased(event -> { if (event.getcode() == KeyCode.ENTER) { commitedit(texttf.gettext()); else if (event.getcode() == KeyCode.ESCAPE) { canceledit(); );

30 Vlastní buňka přepnutí režimů public void startedit() { super.startedit(); if (texttf == null) { createeditor(); settext(null); texttf.settext(createeditorcontent()); setgraphic(texttf); public void canceledit() { super.canceledit(); settext(createcontent()); setgraphic(null); private String createcontent() { return getindex() + " : " + getitem(); private String createeditorcontent() { return getitem();

31 Vlastní buňka - update public void updateitem(string item, boolean empty) { super.updateitem(item, empty); if (empty) { settext(null); setgraphic(null); else { if (isediting()) { if (texttf!= null) { texttf.settext(createeditorcontent()); settext(null); setgraphic(texttf); else { settext(createcontent()); setgraphic(null);

32 Vlastní továrna Rozhraní Callback<P, R> P parametr metody call(p) R návratový typ metody R call(p) Správně typovat P sloupec tabulky (TableColumn<RowData, CellData>) R buňka tabulky (TableCell<RowData, CellData>) namecolumn.setcellfactory (new Callback<TableColumn<Person,String>, TableCell<Person,String>>(){ public TableCell<Person, String> call (TableColumn<Person, String> column) { return new TextFieldCell(); ); namecolumn.setcellfactory(column -> {return new TextFieldCell(); );

33 Událost CellEditEvent<E, T> Typována na Položku tabulky (E), typ buňky / sloupce (T) Vzniká při Potvrzení editace (setoneditcomit()) Zrušení editace (setoneditcancel()) pokud jsou buňky editovatelné, je nutné na ni reagovat v obsluze uložit data do modelu Obsahuje Kde došlo k editaci - gettableposition(), v ní getrow(), getcolumn() Starou (getoldvalue()) a novou (getnewvalue()) hodnotu buňky (získanou při potvrzení commitu), aktuální hodnotu řádky (getrowvalue()) Tabulku kde došlo k události (gettableview())

34 Uložení dat do modelu Obsluha události CellEditEvent<E, T> Metoda setoneditcommit() (buňka nemá referenci na celý řádek, ale jen na svou hodnotu) namecolumn.setoneditcommit(event -> { comitname(event); ); private void comitname(celleditevent<person, String> event) { tabletv.getitems().get (event.gettableposition().getrow()).setname(event.getnewvalue()); // nebo event.getrowvalue(). setname(event.getnewvalue());

35 Manipulace s daty Přidávání do kolekce modelu Lze získat přes getitems() Tabulka automaticky aktualizována Získání vybraných dat selection = table.getselectionmodel().getselecteditems(); Mazání stejné jako u seznamu (probíhá nad kolekcí nezáleží na tom jestli jde o tabulku) Řádky Kontejner TableRow v sobě má buňky jednoho řádku, obvykle stačí výchozí Kontextové menu Dá se nastavit pro celou tabulku nebo pro každý sloupec zvlášť Vypočtené sloupce Data lze vytvářet v tovární metodě, v datovém modelu (získat přes get ()) nebo přes binding sestavení vlastní vypočtené property

36 Získání dat bez getrů Nutné vytvořit si vlastní továrnu na tvorbu dat Musí vracet implementaci ObservableValue<ColumnType> - obalové objekty Property<> pro všechny datové typy namecolumn.setcellvaluefactory( new Callback<TableColumn.CellDataFeatures<Person,String>, ObservableValue<String>>() { public ObservableValue<String> call (CellDataFeatures<Person, String> param) { return new SimpleStringProperty(param.getValue().getName()); ); namecolumn.setcellvaluefactory(celldata -> { return new SimpleStringProperty(cellData.getValue().getName()); ); CellDataFeatures<RowType, ColumType> obaluje hodnotu v jednom řádku, reference na tabulku, sloupec a data RowType getvalue()

37 Vypočtený sloupec connectednamecolumn.setcellvaluefactory(value -> new StringBinding() { { super.bind(value.getvalue().nameproperty(), protected String computevalue() { return value.getvalue().nameproperty().getvalue() + " " + value.getvalue().surnameproperty().getvalue(); );

38 Strom (TreeView<T>) Zobrazení stromových dat Složen z TreeItem<T> Jen obaluje uživatelský typ T není nutné řešit zařazení prvku do stromu Není Node, jen tvoří logickou strukturu stromu Ve stromu TreeCell<T> Sestavení podobné jako u grafu scény Jeden kořen Prvky mají potomky getchildren(), jako kolekci prvků stromu

39 Sestavení stromu Je nutné vytvořit dopředu alespoň kořenový uzel TreeItem<String> rootnode = new TreeItem<String>("MyTree"); TreeView<String> treeview = new TreeView<String>(rootNode); Další uzly je možné přidávat jako potomky getchildren().add() nebo addall() Uzly je možné programově expandovat rootnode.setexpanded(true) Expanduje se TreeItem, ne TreeCell! Uzel vykreslen přes tostring() metodu obalovaného objektu S každým prvkem stromu může být spojen Node vykreslí se před jeho popis

40 Zpracování prvků Podobné jako v seznamu Lze nastavit režim výběru pozor při výběru více prvků mohou být na různých místech ve stromu getselectionmodel().getselecteditems() vrací kolekci prvků typováno na <TreeItem<T>>, ne na samotné T Vkládat potomky za vybrané prvky jde snadno Stačí přidat jako jeho děti Mazání je složité Strom není jednoduchá kolekce nemá nic jako removeall(), to funguje jen u jednotlivých uzlů

41 Editace buněk Funguje podobně jako u seznamu Pokud je strom sestaven ze String, funguje automatická editace treeview.seteditable(true) treeview.setcellfactory(textfieldtreecell.fortreeview()) Pro primitivní datové typy se model sám aktualizuje Pro jiné objekty ve stromu je třeba použít vlastní TreeCell<T> Nastavit přes CellFactory Překrýt updateitem() zobrazení dat startedit() vytvoření editoru, obsluha ukončení editace (ENTER, ESC) canceledit() návrat do zobrazovacího režimu Nastavit obsluhu setoneditcommit() nebo ukládat data do modelu přímo v buňce (přes getitem())

42 Existující buňky Podobné jako u seznamu CheckBoxTreeCell ChoiceBoxTreeCell ComboBoxTreeCell TextFieldTreeCell Textové buňky mohou mít StringConverter<T> Nastaven jako parametr fortreeview() Výběrové buňky mohou mít ObservableList<T> Nastaven jako parametr fortreeview() Podobně jako u tabulky lze zjistit index (getindex(), je to potomek IndexedCell) Pořadí mezi aktuálně rozbalenými buňkami není stálý! Mění se i jestli je buňka odd nebo even

43 Naslouchání událostem Stačí poslouchat na kořeni stromu Je nežádoucí poslouchat na každém TreeItem TreeItem nemá seton metody Pro naslouchání addeventhandler(eventtype, EventHandler) Události: TreeItem.valueChangedEvent TreeItem.treeItemCountChangedEvent TreeItem.branchExpandedEvent() TreeItem.branchCollapsedEvent()

44 Vlastní CellFactory treeview.setcellfactory( new Callback<TreeView<String>, TreeCell<String>>(){ public TreeCell<String> call(treeview<string> p) { ); return new TextFieldTreeCellImpl(); Využívá rozhraní Callback<P, R> P typ parametru volané metody R typ návratové hodnoty treeview.setcellfactory(treev -> {return new TextFieldTreeCellImpl(); );

45 Porovnávání potomků Lze řadit potomky v jednom uzlu Potomci jsou v ObservableList(), ten má metodu sort(comparator) Parametr sort() může být null, pokud jsou prvky Comparable Bohužel TreeItem<Item> není Comparable a nedeleguje compareto() na svůj Item implementovat vlastní TreeItem jako potomka nebo napsat komparátor Pokud jsou Item porovnatelné, je to snadné parent.getchildren().sort((item1, item2) -> { return item1.getvalue().compareto(item2.getvalue()); );

46 Vlastní buňka TreeCell<T> class TextFieldTreeCellImpl extends TreeCell<String> { private TextField textfield; public void startedit() { super.startedit(); if (textfield == null) { createtextfield(); settext(null); setgraphic(textfield); textfield.selectall(); public void canceledit() { super.canceledit(); settext((string) getitem()); setgraphic(gettreeitem().getgraphic());

47 Vlastní buňka TreeCell<T> private void createtextfield() { textfield = new TextField(getString()); textfield.setonkeyreleased(new EventHandler<KeyEvent>() { public void handle(keyevent t) { if (t.getcode() == KeyCode.ENTER) { commitedit(textfield.gettext()); else if (t.getcode() == KeyCode.ESCAPE) { canceledit(); );

48 Vlastní buňka TreeCell<T> public void updateitem(string item, boolean empty) { super.updateitem(item, empty); if (empty) { settext(null); setgraphic(null); else { if (isediting()) { if (textfield!= null) { textfield.settext(getstring()); settext(null); setgraphic(textfield); else { settext(getstring()); setgraphic(gettreeitem().getgraphic());

49 Reakce na změnu výběru Hodí se při aktualizaci komponent s doplňující informací Výběr je kolekce ObservableList<T>, je třeba reagovat na změnu jejího obsahu Společné pro všechny komponenty umožňující výběr Dvě metody addlistener() nutné uvést typ parametru ancestortrv.getselectionmodel().getselecteditems(). addlistener((listchangelistener.change <? extends TreeItem<Ancestor>> change) -> { dosomething(); ); ListChangeListener.Change obsahuje informace o provedené změně (jaké prvky byly přidány)

50 Tabulka TreeTableView<S> Kombinace tabulkového a stromového zobrazení První sloupec se chová jako strom je možné v něm rozbalovat a sbalovat uzly musí fungovat jako klíč ke stromu Datový model je stejný jako u stromu Může obsahovat složitý objekt Jednotlivé vlastnosti mohou být ve sloupcích tabulky Lze vybírat celé řádky nebo jednotlivé buňky

51 Sloupce TreeTableColumn<S, T> Podobný jako sloupec tabulky S typ dat v řádku T typ dat ve sloupci Stejně jako u tabulky může mít podsloupce Stejně jako u tabulky funguje řazení podle sloupců Datový model není 1 kolekce data se řadí jen v rámci uzlů Řazení celého stromu lze omezit jen na prvky první úrovně

52 Data pro sloupec Nutné nastavit setcellvaluefactory(), jako u tabulky Pokud jsou v modelu beany (mají setry a getry), lze použít TreeItemPropertyValueFactory column.setcellvaluefactory( new TreeItemPropertyValueFactory<Employee, String>("property")); Pokud chci hodnotu určit sám, musím továrnu vytvořit Musí vracet data zabalená do ObservableItem<ColumnType> ReadOnlyStringWrapper, SimpleStringProperty, column.setcellvaluefactory( (TreeTableColumn.CellDataFeatures<Employee, String> param) -> { return new ReadOnlyStringWrapper (param.getvalue().getvalue().get ()); );

53 Buňky Datový model sestaven z TreeItem<RowType> Stejná třída jako u TreeView Potomci musí být stejného typu trochu složitější vytvořit heterogenní strom Buňky jsou potomci TreeTableCell<RowType, CellType> Existují ekvivalenty všech buněk pro TableView Nové buňky a továrny na buňky lze vytvářet stejně jako u TableView (včetně zpracování obsluh při editaci) Při editaci nutné uložit změny do modelu empcolumn.setoneditcommit(event -> { event.gettreetableposition().gettreeitem(). getvalue(). setname(event.getnewvalue()); );

54 Heterogenní strom Nelze mít různé typy uzlů ve stromu má taková komponenta smysl? Lze vytvořit hierarchickou strukturu (např. oddělení a zaměstnanci) se stejným typem vyplním jen jméno (první sloupec) a ostatní data nechám prázdná Potřebuji zajistit aby byly prázdné i kolonky v cellvaluefactory upravím získání hodnoty když vrátí null, buňka nic nezobrazí (pozor na vlastní buňky) column.setcellvaluefactory(param -> { if (param.getvalue().getvalue().ishierarchy()) { return null; else return new ReadOnlyStringWrapper (param.getvalue().getvalue().getdata()); );

55 Vybraná data Lze nastavit mnohonásobný výběr treetableview.getselectionmodel(). setselectionmode(selectionmode.multiple); Přes getselecteditems() lze získat kolekci vybraných TreeItem<RowType> Lze povolit výběr jednotlivých buněk (funguje i u TableView) treetableview.getselectionmodel(). setcellselectionenabled(true); Metoda getselecteditems() opět vrací všechny vybrané řádky Metoda getselectedcells() vrací kolekci TreeTablePositions<RowType, CellType> ze které jde získat číslo řádku a sloupce buňky a TreeItem<RowType> z příslušného řádku

56 Děkuji za pozornost OTÁZKY? NÁZORY, PŘIPOMÍNKY? PŘÍŠTĚ: FXML, CSS, TOK UDÁLOSTÍ V APLIKACI

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

Zapouzdření. Tomáš Pitner, upravil Marek Šabo Zapouzdření Tomáš Pitner, upravil Marek Šabo Co je zapouzdření Naprosto zásadní vlastnost objektového přístupu, možná nejzásadnější Jde o spojení dat a práce s nimi do jednoho celku - objektu Data jsou

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Java - řazení objektů

Java - řazení objektů Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,

Více

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

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

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

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

IRAE 07/08 Přednáška č. 1

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

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

GUI. JavaFX. Java UI, letní semestr 2017/2018 1 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í

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků

Více

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

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

NPRG031 Programování II 1 / :25:46

NPRG031 Programování II 1 / :25:46 NPRG031 Programování II 1 / 26 28. 2. 2018 11:25:46 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty

Více

NMIN201 Objektově orientované programování 1 / :36:09

NMIN201 Objektově orientované programování 1 / :36:09 NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat

Více

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

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational

Více

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

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

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Programování v C++ 2, 4. cvičení

Programování v C++ 2, 4. cvičení Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva

Více

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant KOMPONENTY APLIKACE TreeINFO Petr Štos ECM Business Consultant CO JE TO APLIKACE TreeINFO Sada komponent Komponenty rozšiřující sloupce Komponenty rozšiřující pohledy na data Aplikační části Využití jednotlivě

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue. 23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,

Více

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18 Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: - systematizují typovou kontrolu kompilátorem, - vyjadřují jasněji smysl, zlepšují čitelnost a robustnost programu, - ulehčují

Více

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

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky Google Web Toolkit Martin Šurkovský, SUR096 Vysoká škola Báňská - Technická univerzita Ostrava Katedra informatiky 29. března 2010 Martin Šurkovský, SUR096 (VŠB - TUO) Google Web Toolkit 29. března 2010

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

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

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Abstraktní třída a rozhraní

Abstraktní třída a rozhraní Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě

Více

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

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Seminář Java IV p.1/38

Seminář Java IV p.1/38 Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly

Více

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.

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 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15 Platforma Java Objektově relační mapování II Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, 2016 1 / 15 Dotazování vyhledání objektu podle

Více

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý

Více

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců. Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků

Více

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.

Více

KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45 KMI / TMA Tvorba mobilních aplikací 9. seminář 22.11.2016 ZS 2016/2017 Středa 13:15-15:45 OBSAH SEMINáře Fragmenty a to, co se nevlezlo jinam Větší Displeje je třeba něco dělat? většina aplikací, které

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

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

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální Mediator Mediator motivace FontDialog závislosti mezi jednotlivými ovládacími prvky jsou netriviální Mediator - motivace zná pomůcky, koordinuje interakce místo distribuce chování do jednotlivých pomůcek

Více

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33 Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Dynamické datové struktury I.

Dynamické datové struktury I. Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

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

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Student s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Model Specification Page: 2 Obsah Model architektury... 3 Návrhový model... 3 Bussines

Více

JAVA JavaBeans Java, letní semestr 2018

JAVA JavaBeans Java, letní semestr 2018 JAVA JavaBeans Komponenty přehled komponenta znovupoužitelný kus kódu charakterizována službami, které poskytuje a požaduje není přesná definice komponentové modely JavaBeans Enterprise JavaBeans (EJB)...

Více

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

Programování v jazyku C# II. 5.kapitola Programování v jazyku C# II. 5.kapitola Obsah O ADO.NET Spojení s DB Příkazy Jednoduché čtení DataSet 2/28 ADO.NET ADO - ActiveX Data Object Orientováno na webové aplikace neexistence stavu v HTTP Obecný

Více

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak

Více

Programování v C++ 1, 5. cvičení

Programování v C++ 1, 5. cvičení Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Uživatelský manuál aplikace. Dental MAXweb

Uživatelský manuál aplikace. Dental MAXweb Uživatelský manuál aplikace Dental MAXweb Obsah Obsah... 2 1. Základní operace... 3 1.1. Přihlášení do aplikace... 3 1.2. Odhlášení z aplikace... 3 1.3. Náhled aplikace v jiné úrovni... 3 1.4. Změna barevné

Více

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first

Více

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová 5. Statistica StatSoft, Inc., http://www.statsoft.com, http://www.statsoft.cz. Verze pro Mac i PC, dostupná

Více

Zpravodaj. Uživatelská příručka. Verze

Zpravodaj. Uživatelská příručka. Verze Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

Komponenty v.net. Obsah přednášky

Komponenty v.net. Obsah přednášky doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování

Více

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

ZSF web a intranet manuál

ZSF web a intranet manuál ZSF web a intranet manuál Verze pro školení 11.7.2013. Návody - Jak udělat...? WYSIWYG editor TinyMCE Takto vypadá prostředí WYSIWYG editoru TinyMCE Jak formátovat strukturu stránky? Nadpis, podnadpis,

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

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

JAVA. Další jazyky kompilovatelné do Java byte-code JAVA Další jazyky kompilovatelné do Java byte-code Přehled Scala objektový a funkcionální jazyk Closure funkcionální jazyk dialekt Lispu Groovy skritpovací jazyk Kotlin nová Java Jython Java implementace

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

Více

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

VKLÁDÁNÍ OBJEKTŮ - tabulka

VKLÁDÁNÍ OBJEKTŮ - tabulka VKLÁDÁNÍ OBJEKTŮ - tabulka Autor: Mgr. Dana Kaprálová Datum (období) tvorby: srpen 2013 Ročník: šestý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žák se orientuje v prostředí aplikace

Více

WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní

WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní WR Reality Web Revolution Uživatelský manuál administračního rozhraní Web Revolution s. r. o. 2010 WR Reality Administrace uživatelský manuál Praktický průvodce administrací webové aplikace WR Reality

Více