package test.common; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Locale; import javax.swing.JComboBox; import javax.swing.SwingUtilities; public class LocaleSwitcher { static class LocaleInfo { Locale locale; String displayName; public LocaleInfo(Locale locale, String displayName) { this.locale = locale; this.displayName = displayName; } @Override public String toString() { return displayName; } } public interface LocaleCallback { public void onLocaleSelected(Locale selected); } public static JComboBox getLocaleSwitcher(final LocaleCallback callback) { Object[] locales = new Object[] { new LocaleInfo(new Locale("en", "US"), "English"), new LocaleInfo(new Locale("iw", "IL"), "Hebrew") }; final JComboBox result = new JComboBox(locales); result.setSelectedIndex(0); result.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { LocaleInfo selected = (LocaleInfo) result .getSelectedItem(); callback.onLocaleSelected(selected.locale); } }); } }); return result; } }