Obsah
č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í"
tento problém v podstatě neexistuje, když používáte TLA návrh
ukázka v Netbeans
co dělat, když obsluha stisku tlačítka trvá příliš dlouho (dlouho je 2 nebo 10 sekund)
může jít o
složitý výpočet
kód který způsobí, že class loader musí nahrát mnoho tříd
čekání na I/O nebo síťovou operaci
je třeba nechat běžet tuto obsluhu v samostném vláknu (thread)
nejprve ukázka jak to nedělat --
BadExample.java
pak ukázka jak na to (k prostudování po absovování KIV/PGS)
dnes je jestě brzy na to, abyste příkladům s vlákny zcela porozuměli -- to přijde až po absovování KIV/PGS
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í)
http://www.jfree.org/jfreechart/index.html (hlavní stránka)
http://www.jfree.org/jfreechart/samples.html (ukázky a demo)
http://www.screaming-penguin.com/node/4005 (howto a kód)
http://www.informit.com/guides/content.aspx?g=java&seqNum=74:
všemožné nastavení pro použití ve vlastním programu
stáhnete balíček z http://www.jfree.org/jfreechart/
založíte si svůj projekt -- například v Eclipse:
c:\workspace\MujProjekt
v projektu vytvořte lib
adresář a nakopírujte
do něj dva soubory z distribuce stáhnuté v kroku 1
jfreechart-1.0.9\jfreechart-1.0.9.jar
jfreechart-1.0.9\lib\jcommon-1.0.12.jar
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:
Klepnete pravým tlačítkem na jméno projektu
V kontextovém menu vyberete poslední položku -- Properties
Klepnete na Java Build Path a pak na Add JARs
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.
Nyní můžete program přeložit a spustit
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ů
Vygenerujete nebo načtete data
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.)
Případně provedete různá nastavení prezentačního objektu (grafu)
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 ); } }
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
a kupodivu není to jen prázdné tlachání
seriózní autoři svá doporučení podpírají rigorózním měřením a statistikou
tj. v žádném případě nejde o "jen tak něčí názory", ale o ověřené techniky, jejichž užitečnost a účinnost byla měřena -- chcete-li nějaká čísla, o která se lze opřít v argumentaci, pak například zde: http://www.usabilityprofessionals.org/usability_resources/usability_in_the_real_world/benefits_of_usability.html
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
Počítačová podpora kreativity (KIV/POKR)
prof. Dr. Ing. Ivana Kolingerová
http://iason.zcu.cz/~kolinger/vyukaZCU.html#POKR
konkrétně http://iason.zcu.cz/~kolinger/Pokr/Pokr9b.zip
Založeno na přednášce doc. Sochora
předmět POKR Vám vřele doporučuji k zapsání
Komunikace člověka s počítačem
doc. Ing. Jiří Sochor, CSc. z Masarykovy univerizty v Brně
http://www.fi.muni.cz/~sochor/PV182/
oboji velmi dobré
Netradiční pojetí UI
Office 2007: The Story of the Ribbon
vynikající přednáška o tom jak (a hlavně proč) Microsoft předělal GUI v Office 2007
lze sledovat online nebo v iPodu nebo stáhnout jako WMV
cca 90 minut, ale stojí to za to -- je to opravdu unikátní přednáška
http://blogs.msdn.com/b/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx
Až někdy dostanete za úkol navrhnout opravdové GUI, projděte si nejprve pár odkazů abyste věděli jak na to -- oba níže uvedené jsou jak nabité relevantními informacemi, tak zábavné a snadné ke čtení (k použití ;))
oba weby jsou zaměřeny hlavně na návrh UI pro WWW, ale principy jsou obecné
naopak, zde je řada pěkných příkladů, jak něco nedělat: