import java.awt.*; import java.awt.event.*; import java.util.Locale; import java.util.ResourceBundle; import java.util.MissingResourceException; /** Apuluokka, jolla voi luoda lokalisoituja valikoita */ public class SimpleMenu { /** Metodi, jolla valikko luodaan */ public static Menu create(String bundlename, String menuname, String[] itemnames, ActionListener listener, boolean popup) { // Pyydetään valikkoa varten resurssinippu. ResourceBundle b = ResourceBundle.getBundle(bundlename); // Pyydetään nipusta valikon nimi. Käytetään nimeä oletusotsikkona. String menulabel; try { menulabel = b.getString(menuname + ".label"); } catch(MissingResourceException e) { menulabel = menuname; } // Luodaan valikko. Menu m; if (popup) m = new PopupMenu(menulabel); else m = new Menu(menulabel); // Käydään läpi kaikki valikkoon tulevat valinnat. for(int i = 0; i < itemnames.length; i++) { // Etsitään valinnan otsikko. Oletuksena käytetään valinnan nimeä. String itemlabel; try {itemlabel=b.getString(menuname + "." + itemnames[i] + ".label"); } catch (MissingResourceException e) { itemlabel = itemnames[i]; } // Etsitään valintaa vastaava pikanäppäin ja luodaan sellainen jos oli. String shortcut; try{shortcut = b.getString(menuname + "." + itemnames[i]+".shortcut"); } catch (MissingResourceException e) { shortcut = null; } MenuShortcut ms = null; if (shortcut != null) ms = new MenuShortcut(shortcut.charAt(0)); // Luodaan valikon valinta. MenuItem mi; if (ms != null) mi = new MenuItem(itemlabel, ms); else mi = new MenuItem(itemlabel); // Rekisteröidään tapahtumakuuntelija ja valintaa vastaava komento. if (listener != null) { mi.addActionListener(listener); mi.setActionCommand(itemnames[i]); } // Lisätään valinta valikkoon. m.add(mi); } // Palautetaan automaattisesti lokalisoitu valikko. return m; } /** Yksinkertainen testiohjelma ylläolevaa koodia varten */ public static void main(String[] args) { // Asetetaan oletuslokaali komentoriviargumentin perusteella. if (args.length == 2) Locale.setDefault(new Locale(args[0], args[1])); Frame f = new Frame("SimpleMenu Test"); // Luodaan ikkuna. MenuBar menubar = new MenuBar(); // Luodaan valikkorivi. f.setMenuBar(menubar); // Lisätään valikkorivi // ikkunaan. // Luodaan valikko apumetodilla (oletuslokaalin mukainen). Menu colors = SimpleMenu.create("Menus", "colors", new String[] { "red", "green", "blue" }, null, false); menubar.add(colors); // Lisätään valikko // valikkoriville. f.setSize(300, 150); // Asetetaan ikkunan koko. f.show(); // Näytetään ikkuna. } }