Convenience routines are mini-implementations that can be more
convenient and effective than the general-purpose routines. Here I
present the convenience routines to create
buttons, menus, etc. First, a
simple one, mkMenu( )
:
/** Convenience routine to make up a Menu with its name L10N'd */ Menu mkMenu(ResourceBundle b, String menuName) { String label; try { label = b.getString(menuName+".label"); } catch (MissingResourceException e) { label=menuName; } return new Menu(label); }
There are many such routines that you might need; I have consolidated
several of them into my class
I18N.java
, which is part of the
com.darwinsys.util
package. All methods are
static
, and can be used without having to
instantiate an I18N object because they do not maintain any state
across calls. The method mkButton( )
creates and
returns a localized Button
, and so on. The method
mkDialog
is slightly misnamed, since the
JOptionPane
method
showMessageDialog()
doesn’t create and
return a Dialog
object, but it seemed more
consistent to write it as shown here:
package com.darwinsys.util; import java.util.*; import javax.swing.*; /** Set of convenience routines for internationalized code. * All convenience methods are static, for ease of use. */ public class I18N { /** Convenience routine to make a JButton */ public static JButton mkButton(ResourceBundle b, String name) { String label; try { label = b.getString(name+".label"); } catch (MissingResourceException e) { label=name; } return new JButton(label); } /** Convenience routine to make a JMenu */ public static JMenu mkMenu(ResourceBundle b, String name) { String menuLabel; try { menuLabel = b.getString(name+".label"); } catch (MissingResourceException e) { menuLabel=name; } return new JMenu(menuLabel); } /** Convenience routine to make a JMenuItem */ public static JMenuItem mkMenuItem(ResourceBundle b, String menu, String name) { String miLabel; try { miLabel = b.getString(menu + "." + name + ".label"); } catch (MissingResourceException e) { miLabel=name; } String key = null; try { key = b.getString(menu + "." + name + ".key"); } catch (MissingResourceException e) { key=null; } if (key == null) return new JMenuItem(miLabel); else return new JMenuItem(miLabel, key.charAt(0)); } /** Show a JOptionPane message dialog */ public static void mkDialog(ResourceBundle b,JFrame parent, String dialogTag, String titleTag, int messageType) { JOptionPane.showMessageDialog( parent, getString(b, dialogTag, "DIALOG TEXT MISSING " + dialogTag), getString(b, titleTag, "DIALOG TITLE MISSING" + titleTag), messageType); } /** Just get a String (for dialogs, labels, etc.) */ public static String getString(ResourceBundle b, String name, String dflt) { String result; try { result = b.getString(name); } catch (MissingResourceException e) { result = dflt; } return result; } }
18.227.134.133