ImageViewer Leertaak 20: Open bestand ImageViewer_1 Lees in de theorie het deel over Containers. A B C Welke top-levelcontainer(s) wordt (worden) gebruikt in de klasse ImageViewer_1? Welke andere type(n) container(s) vind je in deze klasse? Welke componenten zijn toegevoegd aan ieder van de containers van vraag A en B? Leertaak 21 Open bestand ImageViewer_1 In versie 2 wordt een menubalk toegevoegd aan het frame. A B C In welke coderegel gebeurt dit? Wat is een ContentPane? Met welke methode worden componenten aan het ContentPane toegevoegd? In de constructormethode van de klasse ImageViewer_1 wordt de methode makeFrame(); aangeroepen. D Hoe luidt de constructormethode? E In welke coderegels staat de methode makeFrame(); gedefinieerd? F In eerder programmaatjes hebben we niet een aparte methode gebruikt om het Frame te maken. Herschrijf ImageViewer_1 waarbij je niet een aparte methode makeFrame(); definieert maar het frame, label en contentpane toch gemaakt worden. Gebruik hiervoor de kennis die je hebt opgedaan uit voorgaande opdrachten. Sla dit bestand op als ImageViewer_1a. In de methode makeFrame() staan aan het einde G frame.pack(); frame.setVisible(true); Wat frame.setVisible(true) betekent laat zich raden. De methode pack() heeft een functie die te maken heeft met de grootte van het window. Haal de regel frame.pack() weg. Wat is het resultaat? Leertaak 22 Open bestand ImageViewer_2 A In deze versie wordt een menu toegevoegd aan de ImageViewer. Daarvoor is een methode gedefinieerd. De methode heet makeMenuBar() en de methode is private. Wat is de betekenis van een ‘private’ methode? (zie theorie) B Is het noodzakelijk om de methode makeMenuBar() hier ‘private’ te maken? Leertaak 23 Bestand ImageViewer_2.java en ImageViewer_3.java Er is een menu aangemaakt in de ImageViewer met daarin de menuitems ‘Open’ en ‘Sluiten’. Deze items hebben nog geen functionaliteit; er gebeurt nog niets wanneer je op het item klikt. We gaan nu eerst zorgen dat het item ‘Sluiten’ iets gaat doen, namelijk het venster sluiten. Voor het openen van een bestand heeft Java een methode openFile(). Voor het sluiten van een bestand kent Java de methode quit. Zoals je al eerder hebt gezien is voor het toevoegen van acties aan componenten een ‘event handler’ nodig en moeten objecten ‘listeners’ zijn van het event. MenuItems geven ActionEvents wanneer een gebruiker hen activeert. A B C D In welke coderegels vind je actionListeners terug? Hoe luidt de header van de methode die de event genereert? Hoe luidt de body van de methode die de ‘Bestand - Open’ event genereert? Hoe luidt de body van de methotde die de ‘Bestand – Sluiten’ event genereert? Leertaak 24 Open de map ImageViewer_4. In de map ImageViewer_4 zijn meerder klassen te vinden: ImagePanel, ImageFileManager, OfImage en ImageViewer_4. A Naar welke klasse verwijst super(width, height, TYPE_INT_RGB); OfImage is een klasse die een afbeelding representeert en zorgt dat we deze afbeelding kunnen manipuleren. De klasse OfImage is een uitbreiding van de standaard Java klasse BufferedImage. BufferedImage beschrijft een afbeelding als een buffer van data betreffende de afbeelding. Een object van BufferedImage is samengesteld uit een raster van pixels en een model waarmee deze pixels kunnen worden vertaald naar kleuren. B Omschrijf globaal de functie van de methoden public void setPixel(int x, int y, Color col) en public Color getPixel(int x, int y) Leertaak 25 Open het bestand ImagePanel.java A Omschrijf in je eigen woorden wat de functie is van de klasse ImagePanel. B Van welke klasse is de klasse ImagePanel een subklasse? Leertaak 26 Open het bestand ImageFileManager.java ImageFileManager is de klasse die in dit programma zorgt voor het laden en Opslaan van afbeeldingen. ImageFileManager zorgt er dus voor dat de gebruiker in staat wordt gesteld om een bestand te kiezen. Objecten van deze klasse kunnen in het bestandssysteem navigeren en een directory openen. A B Welke methode is verantwoordelijk voor het laden van bestanden? Probeer regel voor regel te omschrijven wat de methode uit Leertaak 7A doet. Leertaak 27 A De klassen in de map ImageViewer hebben alles met elkaar te maken. Zij hebben elkaar nodig om het programma te kunnen uitvoeren. Kijk naar de bestanden ImageViewer_4.java. OfImage.java, ImageFileManager.java en ImagePanel.java. In welke klasse wordt naar welke andere klasse verwezen? B Teken iedere klasse als rechthoek met de naam erin. Teken de door jou in A benoemde verwijzingen naar elkaar met pijlen.