Dialogy a vyskakovací okna
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Přidán filtr souborů vybraného typu.) |  (→Dialogy pro výběr souboru:  Změna struktury JFileChooser, doplnění volby cesty dodatečně.) | ||
| Řádka 23: | Řádka 23: | ||
| == Dialogy pro výběr souboru == | == Dialogy pro výběr souboru == | ||
| * Dialogy pro výběr souboru realizuje třída <code>JFileChooser</code> z balíčku <code>javax.swing</code>. | * Dialogy pro výběr souboru realizuje třída <code>JFileChooser</code> z balíčku <code>javax.swing</code>. | ||
| + | |||
| + | ; Zobrazení jednotlivých typů dialogu: | ||
| + | * Třída má předdefinované dialogy pro otevření a uložení a můžeme si vytvořit i dialog s vlastním popisem. | ||
| * Dialogy mají společný základ, liší se v detailech chování a v popisu tlačítek. | * Dialogy mají společný základ, liší se v detailech chování a v popisu tlačítek. | ||
| − | *  | + | * K dispozici jsou: | 
| − | *  | + | ** <code>showOpenDialog</code> | 
| + | ** <code>showSaveDialog</code> | ||
| + | ** <code>showDialog</code>... zde zadáváme jako parametr i popis dialogu | ||
| + | * Při zobrazení dáváme jako parametr rodičovské okno — dialog bude umístěn uprostřed okna. | ||
| + | |||
| + |  JFileChooser fc = new JFileChooser(); | ||
| + |  fc.showOpenDialog(this); | ||
| + | |||
| + | ; Návratová hodnota a vybraný soubor? | ||
| + | * Dialog vrací návratovou hodnotu, kterou můžeme porovnat s konstantou <code>JFileChooser.APPROVE_OPTION</code> a zjistit tak, jestli uživatel potvrdil výběr souboru. | ||
| + | * Vybraný soubor získáme voláním metody <code>getSelectedFile()</code>. | ||
| + | |||
| + |  JFileChooser fc = new JFileChooser(); | ||
| + |  int result = fc.showOpenDialog(this); | ||
| + |  if (result == JFileChooser.APPROVE_OPTION) { | ||
| + |      File selectedFile = fc.getSelectedFile(); | ||
| + |      System.out.println("Uživatel vybral soubor: "+selectedFile.getPath()); | ||
| + |  } else { | ||
| + |      System.out.println("Uživatel ukončil dialog bez výběru souboru." | ||
| + |      System.out.println("Například zvolil Storno/Cancel."); | ||
| + |  } | ||
| + | |||
| + | ; Výchozí cesta (path) | ||
| * Pokud v konstruktoru předáme cestu ke složce, otevře se dialog na začátku v této složce. | * Pokud v konstruktoru předáme cestu ke složce, otevře se dialog na začátku v této složce. | ||
|   JFileChooser fc = new JFileChooser("."); |   JFileChooser fc = new JFileChooser("."); | ||
| − | * Instance < | + | * Instance <code>JFileChooser</code> si mezi jednotlivými voláními pamatuje naposledy použitou cestu. Je tedy vhodné používat po celou dobu běhu aplikace jednu instanci. | 
| + | |||
| + | * Dodatečně lze výchozí cestu nastavit pomocí metody <code>setCurrentDirectory(...)</code>. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| ; Nastavení filtru souborů zvoleného typu | ; Nastavení filtru souborů zvoleného typu | ||
| * Můžeme nastavit, že dialog bude nabízet jen soubory s vybranými příponami. | * Můžeme nastavit, že dialog bude nabízet jen soubory s vybranými příponami. | ||
|   fc.setFileFilter(new FileNameExtensionFilter("Obrázky", "png", "jpg")); |   fc.setFileFilter(new FileNameExtensionFilter("Obrázky", "png", "jpg")); | ||
| − | |||
| − | |||
| − | |||
| − | |||
| ; Příklad použití: | ; Příklad použití: | ||
Aktuální verze z 7. 3. 2023, 07:36
Vyskakovací okna
- Vyskakovací okno (message box) je modální — běh aplikace se přeruší, dokud uživatel nepotvrdí okno.
-  K vyvolání okna slouží třída JOptionPanez balíčkujavax.swing.
-  Vyskakovací okno by mělo vyskočit uprostřed okna, ze kterého je vyvoláno, proto potřebuje odkaz na své rodičovské okno.
- Rodičovské okno předáváme jako první parametr.
-  Pokud předáme null, bude vyskakovací okno uprostřed obrazovky.
 
-  Jako poslední parametr předáváme typ okna:
-  JOptionPane.ERROR_MESSAGE
-  JOptionPane.WARNING_MESSAGE
-  JOptionPane.INFORMATION_MESSAGE
 
-  
- Příklad
if (chyba > 3) {
    JOptionPane.showMessageDialog(null, 
            "Tohle píši ve vyskakovacím okně!", 
            "Titulek okna", JOptionPane.WARNING_MESSAGE);
}
Dialogy pro výběr souboru
-  Dialogy pro výběr souboru realizuje třída JFileChooserz balíčkujavax.swing.
- Zobrazení jednotlivých typů dialogu
- Třída má předdefinované dialogy pro otevření a uložení a můžeme si vytvořit i dialog s vlastním popisem.
- Dialogy mají společný základ, liší se v detailech chování a v popisu tlačítek.
-  K dispozici jsou:
-  showOpenDialog
-  showSaveDialog
-  showDialog... zde zadáváme jako parametr i popis dialogu
 
-  
- Při zobrazení dáváme jako parametr rodičovské okno — dialog bude umístěn uprostřed okna.
JFileChooser fc = new JFileChooser(); fc.showOpenDialog(this);
- Návratová hodnota a vybraný soubor?
-  Dialog vrací návratovou hodnotu, kterou můžeme porovnat s konstantou JFileChooser.APPROVE_OPTIONa zjistit tak, jestli uživatel potvrdil výběr souboru.
-  Vybraný soubor získáme voláním metody getSelectedFile().
JFileChooser fc = new JFileChooser();
int result = fc.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
    File selectedFile = fc.getSelectedFile();
    System.out.println("Uživatel vybral soubor: "+selectedFile.getPath());
} else {
    System.out.println("Uživatel ukončil dialog bez výběru souboru."
    System.out.println("Například zvolil Storno/Cancel.");
}
- Výchozí cesta (path)
- Pokud v konstruktoru předáme cestu ke složce, otevře se dialog na začátku v této složce.
JFileChooser fc = new JFileChooser(".");
-  Instance JFileChoosersi mezi jednotlivými voláními pamatuje naposledy použitou cestu. Je tedy vhodné používat po celou dobu běhu aplikace jednu instanci.
-  Dodatečně lze výchozí cestu nastavit pomocí metody setCurrentDirectory(...).
- Nastavení filtru souborů zvoleného typu
- Můžeme nastavit, že dialog bude nabízet jen soubory s vybranými příponami.
fc.setFileFilter(new FileNameExtensionFilter("Obrázky", "png", "jpg"));
- Příklad použití
JFileChooser fc = new JFileChooser(".");
...
fc.setFileFilter(new FileNameExtensionFilter("Project files", "csv", "prj"));
int vysledek = fc.showOpenDialog(this);
if (vysledek == JFileChooser.APPROVE_OPTION) {
    File zvolenySoubor = fc.getSelectedFile();
    Otevři soubor a zpracuj ho...
}
- Další zdroje
