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

Podobné dokumenty
JAVA. GUI v std knihovně. Java, letní semestr

JAVA V GUI Java, zimní semestr

Swing Vlákna Java, zimní semestr

JAVA UI. Programování uživatelských rozhraní v Javě. Java UI, letní semestr 2017/2018 1

GUI. Systémová integrace pro desktopové aplikace

JAVA V GUI Java, zimní semestr

Kapitola 1. Stromy 1.1. Základní informace

JAVA GUI Java, zimní semestr

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

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.

Java, grafické uživatelské rozhraní 2. Layout managery. Okno a kontejner

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.

Iterator & for cyklus

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

8. Grafické uživatelské rozhraní

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

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

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

JAVA JavaBeans Java, letní semestr 2018

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

Část I Příklad - Generické typy, iterátor

Část I Příklad - Generické typy, iterátor

JAVA JavaBeans Java, letní semestr

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

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

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

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

Kurz Databáze. Obsah. Formuláře. Práce s daty. Doc. Ing. Radim Farana, CSc.

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

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

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í

Obrázek 6.14: Prohlížec nápovedy

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

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

Projekty pro výuku programování v jazyce 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í

Abstraktní datové typy: zásobník

Práce se soubory v Javě

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

Tvorba grafického uživatelského rozhraní v BlueJ

Prohlížení a editace externích předmětů

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

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

Manuál k programu KaraokeEditor

20. Projekt Domácí mediotéka

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

JAVA. Java Management Extensions JMX

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

Technologie JavaBeans

Jazyk C# (seminář 6)

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

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

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

Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu

Dělení a vlastnosti komponent

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

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

Java - řazení objektů

Kontextové dokumenty

typová konverze typová inference

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

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

Návod k softwaru. Získání licence. vojtech.vesely@catania.cz

UJO Framework. revoluční architektura beans. verze

RMI Remote Method Invocation

Java Výjimky Java, zimní semestr

Nápovědu k ostatním modulům naleznete v "Přehledu nápověd pro Apollo". (IS Apollo Nápověda Nápověda).

Chain of responsibility

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

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

Příloha 6. Palety nástrojů

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

Seminář Java IV p.1/38

Programátorská příručka

Algoritmizace a programování

Generické programování

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

Java Enum Java, zimní semestr ,2017 1

Reliance 3 design OBSAH

Teoretické minimum z PJV

Události. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Uživatelské příkazy: false - dialog ukončen IDCANCEL. Vytvoří nové okno. title - titulek okna

MASARYKOVA UNIVERZITA V BRNĚ FAKULTA INFORMATIKY

JAVA Unit testing Java, zimní semestr

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

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

DUM 03 téma: Tvary - objekty

MAXScript výukový kurz

Konvertor diakritiky 3. Instalace

NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE. Ataxo Czech s.r.o.

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

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Webová prezentační aplikace

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

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Semestrální práce 2 znakový strom

Transkript:

Swing Přehled komponent 1

Label třída JLabel pro zobrazení krátkého textu obrázku obojího 2

Tlačítka mnoho druhů tlačítek (buttons) všechna dědí od AbstractButton normální tlačítko (JButton) "klikací" tlačítko toggle button (JToggleButton) přepínací tlačítko (dva stavy) check box (JCheckBox) zaškrtávácí tlačítko radio button (JRadioButton) typicky ve skupině, stisknuté jen jedno událost ActionEvent listener ActionListener 3

Skupiny tlačítek skupina tlačítek stisknuto jen jedno typicky pro RadioButton třída ButtonGroup JRadioButton buttons[] = new JRadioButton [4]; for (int i=0; i<4; i++) { pane.add(buttons[i] = new JRadioButton("Button "+(i+1))); } ButtonGroup bg = new ButtonGroup(); for (int i=0; i<4; i++) { bg.add(buttons[i]); } 4

Tlačítka a HTML text tlačítek a dalších komponent (label,...) může být zadán v HTML starší JDK nemusejí HTML podporovat vůbec nebo jen částečně nedoporučuje se používat new JButton("<html><b><u>T</u>wo<br>lines</b></html>") new JLabel("<html><font color=#ff0000>hello</font></ html>") 5

Ikony interface Icon lze použít na label, tlačítko, menu,... třída ImageIcon implementuje Icon ikona vytvořená z obrázku ze souboru, URL,... jpg, png, gif new JButton("Click", new ImageIcon("ystar.png")); new JLabel("Hello", new ImageIcon("gstar.png"), SwingConstants.CENTER); 6

Tool tips "malá" nápověda "bublina" s textem objeví se při delším podržení myší nad komponentou lze nastavit všemu, co dědí od JComponent button.settooltiptext("click here"); 7

Textové pole třída JTextField editace jednoho řádku textu po stisknutí klávesy ENTER ActionEvent metody String gettext() vratí napsaný text void settext(string text) nastaví text třída JTextArea editace více řádků pro zobrazení posuvníků (scrollbars) nutno vložit do JScrollPane new JScrollPane(new JTextArea()) JScrollPane funguje na vše co implementuje Scrollable 8

Combo box třída JComboBox tlačítko s možnostmi na výběr lze i editovat seteditable(boolean b) při změně ActionEvent String[] list = { "aaaa", "bbbb",... }; JComboBox cb = new JComboBox(list); cb.seteditable(true); 9

List box třída JList seznam položek umožňuje vybírat položky jednu i více naráz (setselectionmode(int mode)) metody int getselectedindex() Object getselectedvalue() ListSelectionEvent ListSelectionListener 10

Menu frame.setjmenubar(createmenu());... private static JMenuBar createmenu() { JMenuBar mb = new JMenuBar(); JMenu menu = new JMenu("File"); JMenuItem item = new JMenuItem("Quit"); menu.add(item); mb.add(menu); menu = new JMenu("Help"); item = new JMenuItem("Content"); menu.add(item); menu.add(new JSeparator());... mb.add(menu); } return mb; 11

Stromy javax.swing.jtree zobrazení hierarchických dat JTree neobsahuje data přímo pouze data zobrazuje data obsahuje model (model-view concept) obecně všechny složitější komponenty mají model JTree, JTable, JList, JButton,... model určuje, jak jsou zobrazovaná data uchovávána a získávána jedna komponenta může mít více modelů př: JList ListModel spravuje obsah seznamu ListSelectionModel aktuální výběr v seznamu 12

JTree: statický obsah DefaultMutableTreeNode top = new DefaultMutableTreeNode("Root"); createnodes(top); tree = new JTree(top);... private void createnodes(defaultmutabletreenode top) { DefaultMutableTreeNode node = null; DefaultMutableTreeNode leaf = null; node = new DefaultMutableTreeNode("Node1"); top.add(node); leaf = new DefaultMutableTreeNode("Leaf1"); node.add(leaf); leaf = new DefaultMutableTreeNode("Leaf2"); node.add(leaf); node = new DefaultMutableTreeNode("Node2"); top.add(node); 13

JTree: dynamické změny rootnode = new DefaultMutableTreeNode("Root Node"); treemodel = new DefaultTreeModel(rootNode); treemodel.addtreemodellistener(new MyTreeModelListener()); tree = new JTree(treeModel); tree.seteditable(true); tree.getselectionmodel().setselectionmode (TreeSelectionModel.SINGLE_TREE_SELECTION);... class MyTreeModelListener implements TreeModelListener { public void treenodeschanged(treemodelevent e) { } public void treenodesinserted(treemodelevent e) { } public void treenodesremoved(treemodelevent e) { } public void treestructurechanged(treemodelevent e) { } } 14

JTree: dynamické změny public DefaultMutableTreeNode addobject(defaultmutabletreenode parent, Object child, boolean shouldbevisible) { DefaultMutableTreeNode childnode = new DefaultMutableTreeNode(child);... treemodel.insertnodeinto(childnode, parent, parent.getchildcount()); } if (shouldbevisible) { tree.scrollpathtovisible(new TreePath(childNode.getPath())); } return childnode; 15

JTree: vlastní model model-view Model popisuje data (např. DefaultTreeModel) View Definuje, jak se mají data zobrazit (JTree) implicitní model DefaultTreeModel pokud nevyhovuje vlastní model př. implicitně uzly ve stromu jsou DefaultMutableTreeNode a implementují TreeNode interface vlastní model může přidávat uzly zcela jiného typu model musí implementovat TreeModel interface 16

TreeModel void addtreemodellistener(treemodellistener l); Object getchild(object parent, int index); int getchildcount(object parent); int getindexofchild(object parent, Object child); Object getroot(); boolean isleaf(object node); void removetreemodellistener(treemodellistener l); void valueforpathchanged(treepath path, Object; newvalue); 17

Ikony ve stromu TreeCellRenderer interface setcellrenderer(treecellrenderer r) metoda na JTree class MyRenderer extends DefaultTreeCellRenderer { public Component gettreecellrenderercomponent(jtree tree,object value,boolean sel,boolean expanded, boolean leaf,int row,boolean hasfocus) { super.gettreecellrenderercomponent(tree, value, sel, expanded, leaf, row, hasfocus); if (...) { seticon(someicon); settooltiptext("..."); } else {...} return this; 18

Ikony ve stromu ImageIcon leaficon = createimageicon(".."); if (leaficon!= null) { DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); } renderer.setleaficon(leaficon); tree.setcellrenderer(renderer); 19

JTable tabulka konstruktory (některé) JTable(Object[][] rowdata, Object[] columnnames) JTable(TableModel dm) 20

TableModel void addtablemodellistener(tablemodellistener l) Class<?> getcolumnclass(int columnindex) int getcolumncount() String getcolumnname(int columnindex) int getrowcount() Object getvalueat(int rowindex, int columnindex) boolean iscelleditable(int rowindex, int columnindex) void removetablemodellistener(tablemodellistener l) void setvalueat(object avalue, int rowindex, int columnindex) 21

AbstractTableModel předpřipravená implementace modelu stačí naimplementovat pouze metody public int getcolumncount() public int getrowcount() public Object getvalueat(int row, int col) 22

JToolBar lišta s tlačítky lze přetáhnout na jiné místo lze i vytrhnout 23

JSplitPane zobrazení 2 komponent vedle sebe pod sebe oddělovač mezi komponentami lze posouvat 24

JDesktopPane okna v okně JDesktopPane plocha JInternalFrame vnitřní okno 25

Swing Dialogy 26

Přehled JDialog dialog = okno podobně jako frame dialog je závislý na frame dialog je modální pokud je zobrazen, je zablokovaný vstup do ostatních oken programu lze vytvářet i nemodální dialogy práce s dialogem stejná jako u frame JOptionPane komponenta usnadňující vytváření standardních dialogů předpřipravené dialogy 27

JOptionPane 28

JOptionPane předpřipravené dialogy lze je konfigurovat defaultní volba statické metody vytvářející dialogy (vždy několik variant jedné metody) showmessagedialog() informační dialog showinputdialog() dialog vyžadující vstup od uživatele vrací String showconfirmdialog() dotazovací dialog (Ano/Ne/Zrušit) vrací int showoptiondialog() Výběr z více možností (Ano-Ne-Možná-Zrušit) 29

JOptionPane lze používat přímo vytvořit JOptionPane objekt několik konstruktorů vložit vytvořený objekt do dialogu 30

JFileChooser standardní dialog pro výběr souborů JFileChooser chooser = new JFileChooser(); chooser.setdialogtype(jfilechooser.open_dialog) FileNameExtensionFilter filter = new FileNameExtensionFilter( "Obrazky", "jpg", "gif"); chooser.setfilefilter(filter); int returnval = chooser.showopendialog(parent); if (returnval == JFileChooser.APPROVE_OPTION) { System.out.println("Vybraný soubor: " + chooser.getselectedfile().getname()); } 31

JColorChooser výběr barvy lze použít jako dialog jako komponenta 32

Úkol Napište jednoduchý textový editor použijte JTextArea a JScrollPane název souboru jako parametr při spuštění pokud soubor existuje, tak ho načte menu uložení ukončení Rozšíření 1 rozšiřte editor o panel s nástroji jako na obrázku Rozšíření 2 načtení souboru jako položka v menu 33

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