Kapitola 1. Co se nevešlo v roce 2012

Obsah

1.1. O magickém tlačítku
1.2. O čekání a o vláknech
1.3. O komponentách třetích stran
1.4. O návrhu (grafického) uživatelského rozhraní
1.4.1. Konkurenční přednášky
1.4.2. Klíčové zdroje na internetu

1.1. O magickém tlačítku

  • častá chyba začínajících programátorů okouzlených možnostmi GUI a nástroji, které "za vás vygenerují spoustu kódu a nechají vás pouze dopsat obsluhu událostí"

  • např. http://en.wikipedia.org/wiki/Magic_pushbutton

  • tento problém v podstatě neexistuje, když používáte TLA návrh

  • ukázka v Netbeans

1.2. O čekání a o vláknech

1.3. O komponentách třetích stran

  • v javě je použití obecně lehké -- stačí stáhnout příslušný JAR soubor a ujistit se, že leží na classpath během kompilace i v run-time

  • příklad: JFreeChart (pod LGPL licencí)

  • všemožné nastavení pro použití ve vlastním programu

    1. stáhnete balíček z http://www.jfree.org/jfreechart/

    2. založíte si svůj projekt -- například v Eclipse: c:\workspace\MujProjekt

    3. v projektu vytvořte lib adresář a nakopírujte do něj dva soubory z distribuce stáhnuté v kroku 1

      1. jfreechart-1.0.9\jfreechart-1.0.9.jar

      2. jfreechart-1.0.9\lib\jcommon-1.0.12.jar

    4. Pro překlad vašeho projektu je třeba zajistit, aby překladač Javy věděl kde hledat třídy z těchto dvou balíčků, aby mohl přeložit váš program. Je třeba, aby tyto dva soubory byly na classpath. V Eclipse zajistíme takto:

      1. Klepnete pravým tlačítkem na jméno projektu

      2. V kontextovém menu vyberete poslední položku -- Properties

      3. Klepnete na Java Build Path a pak na Add JARs

      4. Najdete jak jfreechart-1.0.9.jar tak jcommon-1.0.12.jar v lib adresáři svého projektu, oba označíte (přidržením CTRL klávesy) a stisknete OK a pak ještě jednou OK.

    5. Nyní můžete program přeložit a spustit

    6. Pro distribuci a spuštění uživatelem je třeba zajistit, aby jfreechart-1.0.9.jar a jcommon-1.0.12.jar byly na classpath na jeho počítači

      • je třeba uživatele informovat o tom, že si sám musí stáhnout jfreechart-1.0.9.jar a jcommon-1.0.12.jar a umístit je do svého adresáře Java knihoven např. c:\uloziste-stahnutych-jaru nebo si musí upravit svoji systémovou proměnnou CLASSPATH

      • alterantivně můžete přiložit tyto dva soubory ke své distribuci

        • v tomto případě budete program distribuovat jako zip archiv (ne jako JAR) a

        • modifikujete META-INF\MANIFEST.MF soubor přidáním řádky:

          Class-Path: jfreechart-1.0.9.jar jcommon-1.0.12.jar
        • používáte-li Ant, stačí přidat jednu řádku do <manifest> tasku

          <attribute 
             name="Class-Path" 
             value="jfreechart-1.0.9.jar jcommon-1.0.12.jar" 
          /> 
        • díky tomu uživatel nebude muset nic stahovat ani nastavovat -- stačí když rozbalí vaší distribuci (ten .zip soubor) a spustí váš MujProgram.jar

  • při kódování použijete následující sekvenci kroků

    1. Vygenerujete nebo načtete data

    2. Vytvoříte vhodný prezentační objekt -- vyberete si nějaký vhodný z dema (koláčový graf, Ganttův diagram, čárový graf, jednotlivé body a pod.)

    3. Případně provedete různá nastavení prezentačního objektu (grafu)

    4. Použijete prezentační objekt

      • buď jej vložíte do Swing aplikace

      • nebo jej zakomponujete do WWW aplikace

      • nebo jej uložíte na disk jako obrázek (např. JPG soubor)

  • příklad kódu (vynechány import)

    public class PieChartExample extends JPanel {
      // Holds the data
      private DefaultPieDataset dataset = new DefaultPieDataset();
      // Create the chart
      private JFreeChart chart;
      // Create a panel that can show the chart
      private ChartPanel panel;
    
      public PieChartExample()
      {
        // Initialize the dataset
        dataset.setValue( "Lipka", new Double( 12.0 ) );
        dataset.setValue( "Herout", new Double( 33.0 ) );
        dataset.setValue( "Rohlík", new Double( 18.0 ) );
     
        chart = ChartFactory.createPieChart3D(
          "Procenta (3D s průhledností)", // The chart title
          dataset,       // The dataset for the chart
          true,          // Is a legend required?
          true,          // Use tooltips
          false          // Configure chart to generate URLs?
        );
        PiePlot3D plot4 = ( PiePlot3D )chart.getPlot();
        plot4.setForegroundAlpha( 0.6f ); // Pruhlednost
    
        // Create panel with the chart
        this.panel = new ChartPanel( chart );
        this.add( panel );
    
        // Kód pro uložení do souboru:
        //try {
        //  ChartUtilities.saveChartAsJPEG(new File("C:uur.jpg"), chart, 500, 300);
        //} catch (Exception e) {
        //  System.out.println("Problem occurred creating chart.");
        //}
      }
    
      public static void main( String[] args )
      {
        JFrame frame = new JFrame( "Pie Chart Demo" );
        PieChartExample chart = new PieChartExample();
        frame.getContentPane().add( chart, BorderLayout.CENTER );
        frame.setSize( 640, 480 );
        frame.setVisible( true );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      }
    } 
    
  • JavaDoc: http://www.jfree.org/jfreechart/api.html

1.4. O návrhu (grafického) uživatelského rozhraní

  • klíčové slovo je použitelnost, anglicky usability

  • problémem se zabývá oblast IT, která se nazývá Human-Computer Interaction (postaru: Man-Machine Interaction)

    • sem patří i komunikace s počítačem hlasem,

    • taktilní I/O,

    • virtuální realita,

    • ale my se omezíme na GUI

  • k tématu je k dispozici obsáhlá literatura a řada zdrojů na internetu, ale jen některé jsou kvalitní (viz níže)

  • otázky návrhu UI/GUI jsou studovány a popsány mnohem lépe, než by laik čekal

  • v této přednášce na téma není místo, proto si dovolím odkazy na jiné přednášky, linky na kvalitní servery, které se tématem zabývají a na úžasné video o návrhu GUI pro Office 2007

1.4.1. Konkurenční přednášky

1.4.2. Klíčové zdroje na internetu