1 / 51

Menu: enkel voor applicaties, niet voor applets soorten: hoofdmenu shortcut popupmenu

MENU’S. Menu: enkel voor applicaties, niet voor applets soorten: hoofdmenu shortcut popupmenu. 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. L ayoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout. MENU’S -- HOOFDMENU.

dionne
Download Presentation

Menu: enkel voor applicaties, niet voor applets soorten: hoofdmenu shortcut popupmenu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MENU’S • Menu: • enkel voor applicaties, niet voor applets • soorten: • hoofdmenu • shortcut • popupmenu 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout JAVA -- H10

  2. MENU’S -- HOOFDMENU MenuBar 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout Menu (= hoofdmenu) MenuItem ( = submenu) In Visual Café: via Insert Component In JDK: in 3 stappen JAVA -- H10

  3. MENU’S – HOOFDMENU – VOORBEELD1 JAVA -- H10

  4. MENU’S – HOOFDMENU – VOORBEELD1(1) • import java.awt.*; • import java.awt.event.*; • public class Biologie extends Frame • implements ActionListener • {MenuItem zoogdieren, vogels, bomen, bloemen, keuze; • public static void main(String[] args) • { new Biologie(); • } JAVA -- H10

  5. MENU’S – HOOFDMENU – VOORBEELD1(2) Biologie() { MenuBar mbalk = new MenuBar(); setTitle("Biologie"); setMenuBar(mbalk); Menu mD= new Menu("Dieren"), mP = new Menu("Planten"); mbalk.add(mD); mbalk.add(mP); zoogdieren = new MenuItem("Zoogdieren"); mD.add(zoogdieren); vogels = new MenuItem("Vogels"); mD.add(vogels); bomen = new MenuItem("Bomen"); mP.add(bomen); bloemen = new MenuItem("Bloemen"); mP.add(bloemen); JAVA -- H10

  6. MENU’S – HOOFDMENU – VOORBEELD1(3) zoogdieren.addActionListener(this); vogels.addActionListener(this);bomen.addActionListener(this); bloemen.addActionListener(this); setSize(300,300); // anders enkel een balkje! show(); } public void actionPerformed(ActionEvent evt) { keuze = (MenuItem) evt.getSource(); repaint();} JAVA -- H10

  7. MENU’S – HOOFDMENU – VOORBEELD1(4) public void paint(Graphics g) { if (keuze != null) { String s = null; if (keuze == zoogdieren)s = "Olifant, paard, hond"; elseif (keuze == vogels)s = "Spreeuw, duif, zwaluw"; elseif (keuze == bomen)s = "Eik, beuk, spar"; elseif (keuze == bloemen) s= "Roos, zonnebloem, madeliefje"; else s= "Programmafout"; g.drawString(s, 80, 140);}} JAVA -- H10

  8. MENU’S – HOOFDMENU – VOORBEELD2 JAVA -- H10

  9. MENU’S – HOOFDMENU – VOORBEELD2(1) import java.awt.*; import java.awt.event.*; public class MenuCirkel extends Frame implements ActionListener { private Cirkel mijnCirkel; private MenuItem groterItem, kleinerItem; private MenuItem linksItem, rechtsItem; public static void main(String[] args) { Frame f = new MenuCirkel(); f.setSize(200, 200); f.setVisible(true); } JAVA -- H10

  10. MENU’S – HOOFDMENU – VOORBEELD2(2) public MenuCirkel() { setTitle("Cirkel"); setLayout(new FlowLayout()); MenuBar menuBalk = new MenuBar(); Menu grootteMenu = new Menu("Grootte"); groterItem = new MenuItem("Groter"); grootteMenu.add(groterItem); groterItem.addActionListener(this); kleinerItem = new MenuItem("Kleiner"); grootteMenu.add(kleinerItem); kleinerItem.addActionListener(this); menuBalk.add(grootteMenu); JAVA -- H10

  11. MENU’S – HOOFDMENU – VOORBEELD2(3) Menu verplaatsMenu = new Menu("Verplaats"); linksItem = new MenuItem("Links"); verplaatsMenu.add(linksItem);linksItem.addActionListener(this); verplaatsMenu.addSeparator(); rechtsItem = new MenuItem("Rechts"); verplaatsMenu.add(rechtsItem);rechtsItem.addActionListener(this); menuBalk.add(verplaatsMenu);setMenuBar(menuBalk); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }}); mijnCirkel = new Cirkel(20, 50, 150); } JAVA -- H10

  12. MENU’S – HOOFDMENU – VOORBEELD2(4) public void actionPerformed (ActionEvent e) {if (e.getSource() == groterItem) mijnCirkel.wijzigGrootte(10); else if (e.getSource() == kleinerItem)mijnCirkel.wijzigGrootte(-10); else if (e.getSource() == linksItem) mijnCirkel.verplaatsLinks(); else if (e.getSource() == rechtsItem)mijnCirkel.verplaatsRechts(); repaint(); } public void paint(Graphics g) {mijnCirkel.display(g);} }  JAVA -- H10

  13. MENU’S – HOOFDMENU – VOORBEELD2(5) class Cirkel // = domein { private int diameter; private int xCoord, yCoord;   Cirkel(int initDiameter, int initX, int initY) { diameter = initDiameter; xCoord = initX; yCoord = initY;} public void wijzigGrootte(int wijziging){diameter += wijziging;} public void verplaatsLinks(){ xCoord -= 10;} public void verplaatsRechts() { xCoord += 10; } public void display(.Graphics g) { g.drawOval(xCoord, yCoord, diameter, diameter);} } JAVA -- H10

  14. MENU’S – SHORTCUT • vlugger toegang tot bepaalde (sub)menu’s • bijkomende parameter in constructor van MenuItem • gebruik maken van constanten van de klasse KeyEvent • toetsen aangeven dmv. virtual key (VK) • Voorbeeld: • Exit = new MenuItem("Exit", new • MenuShortcut (KeyEvent.VK_Q)); 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout JAVA -- H10

  15. MENU’S – SHORTCUT - VOORBEELD(1) import java.awt.*; import java.awt.event.*; import java.io.*;  public class LeesBestand extends Frame implements ActionListener { private MenuItem open, exit; private int aantalE = -1;   public static void main(String[] args) { new LeesBestand(); } JAVA -- H10

  16. MENU’S – SHORTCUT - VOORBEELD (2) LeesBestand() { MenuBar mBalk = new MenuBar(); setTitle("Filedialoogvenster en karakterinvoer"); setMenuBar(mBalk); Menu mFile = new Menu("Bestand"); mBalk.add(mFile);   open = new MenuItem("Open", new MenuShortcut(KeyEvent.VK_O)); exit = new MenuItem("Exit",new MenuShortcut(KeyEvent.VK_Q)); JAVA -- H10

  17. MENU’S – SHORTCUT - VOORBEELD 1(3) mFile.add(open); mFile.addSeparator(); mFile.add(exit); open.addActionListener(this); exit.addActionListener(this); setSize(getToolkit().getScreenSize().width/2, getToolkit().getScreenSize().height/4); show(); } JAVA -- H10

  18. MENU’S – SHORTCUT - VOORBEELD(4) public void actionPerformed (ActionEvent evt) { if ((MenuItem) evt.getSource() == exit) System.exit(0); FileDialog dial = new FileDialog( this,"Open", FileDialog.LOAD); dial.show(); String fNaam = dial.getFile(), fDir = dial.getDirectory(); if (fNaam == null || fDir == null) return; FileInputStream fis; try {fis = new FileInputStream(fDir + fNaam);} catch(FileNotFoundException fnfe){ getToolkit().beep(); return;} JAVA -- H10

  19. MENU’S – SHORTCUT - VOORBEELD(5) try { aantalE = 0; for ( ; ; ) { int chInt = fis.read(); if (chInt == -1) break; // EOF if (chInt == 'e' || chInt == 'E') aantalE++; } fis.close(); } catch(IOException ioe) { } repaint(); } JAVA -- H10

  20. MENU’S – SHORTCUT - VOORBEELD(6) public void paint(Graphics g) { if (aantalE >= 0) g.drawString("Aantal letters e of E = “ + aantalE, 80, 120); } } FileInputStream leest sequentieel bytes van een stream: byte[] buffer = new byte[4096]; int bytes_read; while ((bytes_read = from.read(buffer))!=-1) to.write(buffer,0,bytes_read); JAVA -- H10

  21. MENU’S – POPUPMENU • Aanmaken van een menu in een component of frame • Snel en gemakkelijk • Geen toegangs-geheugentoetsen, zoals F10 (= naar menu-bar), maar eens geselecteerd kunnen we terug met de pijltjestoetsen werken • PopupMenu: subklasse van Menu • Via methode show(Component source, int x, int y) 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout JAVA -- H10

  22. MENU’S – POPUPMENU -- VOORBEELD(1) import java.awt.*; import java.awt.event.*; import java.io.*; public class PopupDemo extends Frame implements ActionListener { PopupMenu p; CvPopupMenu cv;   MenuItem rood, groen, blauw, keuze = null;  public static void main(String[] args) { new PopupDemo(); } JAVA -- H10

  23. MENU’S – POPUPMENU - VOORBEELD(2) PopupDemo() { setTitle("Klik eerst met rechtermuisknop"); cv = new CvPopupMenu(this); add(cv, "Center"); p = new PopupMenu(); rood = pVoegToe("Rood"); groen = pVoegToe("Groen"); blauw = pVoegToe("Blauw"); cv.add(p); show(); } JAVA -- H10

  24. MENU’S – POPUPMENU - VOORBEELD(3) MenuItem pVoegToe(String s) { MenuItem mi = new MenuItem(s); mi.addActionListener(this); p.add(mi); return mi; } public void actionPerformed(ActionEvent e) { keuze = (MenuItem)e.getSource(); cv.repaint(); } } JAVA -- H10

  25. MENU’S – POPUPMENU - VOORBEELD(4) class CvPopupMenu extends Canvas { private PopupDemo fr; // communicatie met andere klasse void toon(MouseEvent e) { fr.p.show(this, e.getX(), e.getY());}   CvPopupMenu(PopupDemo fr) { this.fr = fr; addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) toon(e); else repaint(); }); } JAVA -- H10

  26. MENU’S – POPUPMENU - VOORBEELD(5)   public void paint(Graphics g) { if (fr.keuze == null) return; Color kl = (fr.keuze == fr.rood ? Color.red : fr.keuze == fr.groen ? Color.green : Color.blue); g.setColor(kl); Dimension d = getSize(); // grootte van de frame g.fillOval(0, 0, d.width, d.height); } JAVA -- H10

  27. MENU’S – POPUPMENU - VOORBEELD JAVA -- H10

  28. LAYOUT MANAGERS • Soorten: • FlowLayout • BorderLayout • CardLayout • GridLayout • GridBagLayout • BoxLayout (Swing) Instellen:setLayout( …..) of setLayout(null) Opvragen: getLayout() 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout JAVA -- H10

  29. LAYOUT MANAGERS – VOORBEELD FLOWLAYOUT import java.applet.Applet; import java.awt.*; public class FlowApplet extends Applet // default FlowLayout { Button knop1 = new Button("Ik"); Button knop2 = new Button("denk,"); Button knop3 = new Button("dus"); Button knop4 = new Button("ik"); Button knop5 = new Button("ben"); JAVA -- H10

  30. LAYOUT MANAGERS – VOORBEELD FLOWLAYOUT public void init() { setLayout(new FlowLayout()); add(knop1); add(knop2); add(knop3); add(knop4); add(knop5); setVisible(true); }} JAVA -- H10

  31. LAYOUT MANAGERS – VOORBEELD FLOWLAYOUT FlowLayout.CENTER + hgap = vgap = 5 (default-constructor) JAVA -- H10

  32. LAYOUT MANAGERS – VOORBEELD BORDERLAYOUT  public void init() { setLayout(new BorderLayout()); add(knop1, "North"); add(knop2, "South"); add(knop3, "East"); add(knop4, "West"); add(knop5, "Center"); setVisible(true); } JAVA -- H10

  33. LAYOUT MANAGERS – VOORBEELD BORDERLAYOUT hgap = vgap = 0 JAVA -- H10

  34. LAYOUT MANAGERS – VOORBEELD CARDLAYOUT CardLayout layout = new CardLayout(); public void init() {  setLayout(layout); add(knop1,”Eén”); add(knop2,”Twee”); add(knop3,”Drie”); add(knop4,”Vier”); add(knop5,”Vijf”); setVisible(true); } JAVA -- H10

  35. LAYOUT MANAGERS – VOORBEELD CARDLAYOUT public void start() { for (int kaarten = 1; kaarten < 50; kaarten ++) { layout.next(this); for (int pauze = 1; pauze < 400000; pauze++); } } JAVA -- H10

  36. LAYOUT MANAGERS – VOORBEELD CARDLAYOUT • Bijkomende methoden: • first (Container) • last (Container) • next (Container) • previous (Container) • show (Container, Card) • bv. layout.show(this,Vijf); JAVA -- H10

  37. LAYOUT MANAGERS – VOORBEELD CARDLAYOUT hgap = vgap = 0 JAVA -- H10

  38. LAYOUT MANAGERS – GRIDLAYOUT 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout • alle componenten zijn even groot • raster met opgegeven aantal rijen en kolommen • afmetingen van de cellen veranderen samen met de afmetingen van het venster JAVA -- H10

  39. LAYOUT MANAGERS – VOORBEELD GRIDLAYOUT • public void init() • { setLayout(new GridLayout(2, 3)); • add(knop1); • add(knop2); • add(knop3); • add(knop4); • add(knop5); • setVisible(true); • } JAVA -- H10

  40. LAYOUT MANAGERS – VOORBEELD GRIDLAYOUT hgap = vgap = 0 JAVA -- H10

  41. LAYOUT MANAGERS – GRIDBAGLAYOUT 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2. Layoutmanager FlowLayout BorderLayout CardLayout GridLayout GridBagLayout • opsplitsing in rijen en kolommen • component kan meerdere cellen in beslag nemen • klasse GridBagConstraints om per component bepaalde eigenschappen (constraints) vast te leggen • constraints instellen d.m.v. setConstraints (Java 1.0) of via de add-methode (Java 1.1) JAVA -- H10

  42. LAYOUT MANAGERS – GRIDBAGLAYOUT • Velden van het GridBagConstraints-object: • gridx en gridy : de positie van de component in het grid • gridwidth en gridheight : aantal rijen en kolommen, dat • de component in de grid inneemt • insets : specifieert de marge, in aantal pixels, dat moet vrij- • gelaten worden rond de component • fill : specifieert hoe een component moet groeien, • wanneer er meer plaats ter beschikking is • anchor : als een component kleiner is dan de cel waarin hij • wordt geplaatst, geeft deze variabele aan hoe de component • moet worden opgesteld JAVA -- H10

  43. LAYOUT MANAGERS – GRIDBAGLAYOUT • weightx en weighty: als in de container nog plaats over is, • wordt de ruimte volgens de “gewichten” opgedeeld (1.0 • betekent : de resterende ruimte mag volledig benut worden) • Voorbeeld 1: • GridBagConstraints c = new GridBagConstraints(); • c.fill = GridBagConstraints.BOTH; • c.insets = new Insets(5,5,5,5); • c.gridx = 0; c.gridy = 0; c.gridwidth = 4; c.gridheight = 4; • c.weightx = c.weighty = 1.0; • add(new Button(“Button #1”),c); • c.gridx = 4; c.gridy = 0; c.gridwidth = 1; c.gridheight = 1; • c.weightx = c.weighty = 0.0; • add(new Button(“Button #2”),c); • c.gridx = 4; c.gridy = 1; c.gridwidth = 1; c.gridheight = 1; • add(new Button(“Button #3”),c); • c.gridx = 4; c.gridy = 2; c.gridwidth = 1; c.gridheight = 2; • add(new Button(“Button #4”),c); JAVA -- H10

  44. LAYOUT MANAGERS – VOORBEELD 2 GRIDBAGLAYOUT JAVA -- H10

  45. LAYOUT MANAGERS – VOORBEELD 2 GRIDBAGLAYOUT import java.applet.Applet; import java.awt.*; public class Grid_Bag extends Applet { private Button knop1 = new Button("Ik"); private Button knop2 = new Button("denk,"); private Button knop3 = new Button("dus"); private Button knop4 = new Button("ik"); private Button knop5 = new Button("ben"); private GridBagLayout gridBag = new GridBagLayout(); } JAVA -- H10

  46. LAYOUT MANAGERS – VOORBEELD 2 GRIDBAGLAYOUT private void eerste_rij (Button knop) {GridBagConstraints constraints = new GridBagConstraints(); constraints.gridwidth = GridBagConstraints.REMAINDER; // de component mag de resterende ruimte innemen constraints.anchor = GridBagConstraints.WEST; // de component moet westelijk staan t.o.v. de rij gridBag.setConstraints (knop, constraints); add(knop); } JAVA -- H10

  47. LAYOUT MANAGERS – VOORBEELD 2 GRIDBAGLAYOUT private void tweede_rij (Button knop1, Button knop2) { GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.weightx = 1.0; gridBag.setConstraints(knop1, constraints); add(knop1); constraints = new GridBagConstraints(); constraints. gridwidth = GridBagConstraints.REMAINDER; constraints.fill = GridBagConstraints.VERTICAL; constraints.weighty = 1.0; // de resterende ruimte innemen gridBag.setConstraints(knop2, constraints); add(knop2); } JAVA -- H10

  48. LAYOUT MANAGERS – VOORBEELD 2 GRIDBAGLAYOUT private void derde_rij (Button knop) { GridBagConstraints constraints = new GridBagConstraints(); constraints. gridwidth = GridBagConstraints.REMAINDER; constraints.fill = GridBagConstraints.BOTH; // de component moet in beide richtingen aangroeien constraints.weighty = 1.0; gridBag.setConstraints(knop, constraints); add(knop); } JAVA -- H10

  49. LAYOUT MANAGERS - VOORBEELD 2 GRIDBAGLAYOUT private void vierde_rij (Button knop) { GridBagConstraints constraints = new GridBagConstraints(); constraints. gridwidth = GridBagConstraints.REMAINDER; gridBag.setConstraints(knop, constraints); add(knop); // wordt default centraal gezet <-> rij 1 } JAVA -- H10

  50. LAYOUT MANAGERS – VOORBEELD 2 GRIDBAGLAYOUT public void init() { setLayout( gridBag); eerste_rij(knop1); tweede_rij(knop2, knop3); derde_rij(knop4); vierde_rij(knop5); setVisible(true); } } JAVA -- H10

More Related