DKGG -­ LAB1 Peter Börjesson [email protected] Laboration 1 • Kursens labbar syftar till att ge träning i att bygga prototyper av grafiska gränssnitt. – Swing – Java FX • Olika backend, olika instruktioner Arkitektur – Lab 1 • En form av MVC – Model-­View-­Presenter – Presenter har referenser till både model och view – Samordnar kommunikation åt båda hållen – Model och Presenter finns klara Utvecklingsmiljö (Swing) • Lab görs med Java + NetBeans samt en skalapplikation som vi tillhandahåller. • Motiv – Java – Bra GUI – editor i NetBeans – GUI-­design kärnan i labbarna – Rätt komplexitet • Fritt fram att använda andra utvecklingsmiljöer, men handledning och instruktioner är riktade mot Netbeans. – Krav på använda GUI-­editor Skalapplikationen (Swing) • ExampleApplication.java – Startar upp, avslutar m.m. • ExampleApplicationView – extends JFrame – Jframe och menu finns – Redo att börja skapa med GUI-­editor • initComponents() • Rör aldrig denna • Properties-­filer – Alla strängar på samma ställe – Bra för att stödja olika språk NetBeans GUI-­editor (Swing) Kopplingar (Swing) • Drar komponenter till vyn – Lämpliga variabler skapas – Ändra namnen – Kan kopplas till Properties-­fil • Events – Tomma metoder private void buttonPressed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } Utvecklingsmiljö (FX) • Lab görs med Java FX + NetBeans och Scene Builder samt en skalapplikation som vi tillhandahåller. • Motiv – Java FX – Scene Builder – GUI-­design kärnan i labbarna – Mer avancerat alternativ, mindre handledning • Fritt fram att använda andra utvecklingsmiljöer än NetBeans, krav på att använda Scene Builder. Skalapplikationen (FX) • ExampleApplication.java – Startar upp, avslutar m.m. – Kopplar ihop fxml och properties till Java. • ExampleApplicationController.java – Hanterar all GUI-­logik och kopplingar till backend • example_application.fxml – Innehåller GUI-­kod som redigeras i Scene Builder • Properties-­filer – Alla strängar på samma ställe – Bra för att stödja olika språk Scene Builder (FX) Kopplingar (FX) • Drar komponenter till vyn – Ge dessa ett fx:id newButton – Java-­controller: @FXML private Button newButton – Kan kopplas till Properties-­fil • Action – Skapa metoder i Java Controller @FXML private void newButtonActionPerformed(ActionEvent evt) { // TODO add your handling code here: } Property (FX) • Alla komponenter har olika properties som går att lyssna på, tex: selectedItemProperty, eller focusedProperty – Dessa kopplas ihop med en ChangeListener • ChangeListener @Override public void changed(observable, oldValue, newValue) { // TODO add your handling code here: }