Swing Language Menu
Having trouble implementing a menu that allows the user to choose a gui language. Never really used swing or swing menus for that matter and I really need help. This is what I have so far (am I headed in the right direction and where do I go from here)?:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
publicclass Menuimplements ActionListener{
JTextArea output;
JScrollPane scrollPane;
String newline ="\n";
static JMenuItem english, spanish, sicilian, italian;
public JMenuBar createMenuBar(){
JMenuBar menuBar;
JMenu menu;
//Create the menu bar.
menuBar =new JMenuBar();
//Build the first menu.
menu =new JMenu("Language");
menu.setMnemonic(KeyEvent.VK_A);
menuBar.add(menu);
//a group of JMenuItems
english =new JMenuItem("English",KeyEvent.VK_T);
english.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
english.addActionListener(this);
menu.add(english);
//a group of JMenuItems
sicilian =new JMenuItem("Siciliano",KeyEvent.VK_T);
sicilian.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
sicilian.addActionListener(this);
menu.add(sicilian);
italian =new JMenuItem("Italiano",KeyEvent.VK_T);
italian.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
italian.addActionListener(this);
menu.add(italian);
spanish =new JMenuItem("Espanol",KeyEvent.VK_T);
spanish.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
spanish.addActionListener(this);
menu.add(spanish);
return menuBar;
}
publicvoid actionPerformed (ActionEvent e){
Messages m;
JMenuItem b = (JMenuItem) e.getSource();
if (b == english) m =new Messages(Messages.ENGLISH);
elseif (b == sicilian) m =new Messages(Messages.SICILIAN);
elseif (b == spanish) m =new Messages(Messages.SPANISH);
else m =new Messages(Messages.ITALIAN);
((ScopaGUI) b.getTopLevelAncestor()).setMessage(m);
}
public Container createContentPane(){
//Create the content-pane-to-be.
JPanel contentPane =new JPanel(new BorderLayout());
contentPane.setOpaque(true);
//Create a scrolled text area.
output =new JTextArea(5, 30);
output.setEditable(false);
scrollPane =new JScrollPane(output);
//Add the text area to the content pane.
contentPane.add(scrollPane, BorderLayout.CENTER);
return contentPane;
}
privatestaticvoid createAndShowGUI(){
//Create and set up the window.
JFrame frame =new JFrame("Menu");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
Menu pane =new Menu();
frame.setJMenuBar(pane.createMenuBar());
frame.setContentPane(pane.createContentPane());
//Display the window.
frame.setSize(450, 260);
frame.setVisible(true);
}
}
[5338 byte] By [
germans88a] at [2007-11-27 2:05:17]

Sorry for being so vague, I'm trying to implement a class to take the place of a button class which looks like this:
class LanguageButtonGroup extends ButtonGroup implements ActionListener {
private JRadioButton english, sicilian, italian, spanish;
public LanguageButtonGroup (int language, JPanel p) {
english = new JRadioButton("English");
sicilian = new JRadioButton("Siciliano");
italian = new JRadioButton("Italiano");
spanish = new JRadioButton("Espanol");
add(english); p.add(english);
add(sicilian); p.add(sicilian);
add(italian); p.add(italian);
add(spanish); p.add(spanish);
english.addActionListener(this);
sicilian.addActionListener(this);
italian.addActionListener(this);
spanish.addActionListener(this);
switch (language) {
case Messages.ENGLISH: english.setSelected(true); break;
case Messages.SICILIAN: sicilian.setSelected(true); break;
case Messages.ITALIAN: italian.setSelected(true); break;
case Messages.SPANISH: spanish.setSelected(true); break;
}
}
public void actionPerformed (ActionEvent e) {
Messages m;
JRadioButton b = (JRadioButton) e.getSource();
if (b == english) m = new Messages(Messages.ENGLISH);
else if (b == sicilian) m = new Messages(Messages.SICILIAN);
else if (b == spanish) m = new Messages(Messages.SPANISH);
else m = new Messages(Messages.ITALIAN);
((ScopaGUI) b.getTopLevelAncestor()).setMessage(m);
}
}
I'm not really sure how to go about changing the language when the user selects a menu item like spanish or english.
This is what the main class looks like:
public class Scopa {
public static void main (String[] arg) {
ScopaUI ui = null;
Messages messages = null;
boolean debug = false;
try {
for (int i = 0; i < arg.length; i++) {
if (arg[i].equals("-g")) ui = new ScopaGUI();
else if (arg[i].equals("-t")) ui = new ScopaTUI();
else if (arg[i].equals("-d")) debug = true;
else if (arg[i].equals("-l")) {
if (arg[++i].equals("Sicilian")) messages = new Messages(Messages.SICILIAN);
else if (arg[i].equals("Italian")) messages = new Messages(Messages.ITALIAN);
else if (arg[i].equals("Spanish")) messages = new Messages(Messages.SPANISH);
else if (!arg[i].equals("English"))
throw new IllegalArgumentException("Unsupported language -- " + arg[i]);
}
else throw new IllegalArgumentException("Invalid option -- " + arg[i] +
"; usage: Scopa [ -g | -t ] -l language");
}
final ScopaUI chosenUI = ui == null ? new ScopaGUI() : ui;
final Messages chosenLanguage = messages == null ? new Messages(Messages.ENGLISH) : messages;
final boolean debugging = debug;
if (chosenUI.getClass().getName().endsWith("TUI")) chosenUI.runUI(chosenLanguage, debugging);
else javax.swing.SwingUtilities.invokeLater(new Runnable () {
public void run () {
chosenUI.runUI(chosenLanguage, debugging);
chosenUI.createAndShowGUI();
}
});
}
catch (IllegalArgumentException e) { IO.stderr.println(e.getMessage()); }
}
}
-Thanks