Java tutorial
import java.text.NumberFormat; import java.util.Locale; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class NumberViewer extends JPanel { protected AbstractTableModel tableModel; protected double currentValue = 1234567.89d; protected final static Locale[] availableLocales; static { availableLocales = Locale.getAvailableLocales(); } public final static int LOCALE_COLUMN = 0; public final static int NUMBER_COLUMN = 1; public final static int CURRENCY_COLUMN = 2; public final static int PERCENT_COLUMN = 3; public final static String[] columnHeaders = { "Locale", "Numeric", "Currency", "Percent" }; public static void main(String[] args) { JFrame f = new JFrame("Number Viewer"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(new NumberViewer()); f.pack(); f.setVisible(true); } public NumberViewer() { tableModel = new LocaleTableModel(); JTable table = new JTable(tableModel); add(new JScrollPane(table)); } class LocaleTableModel extends AbstractTableModel { public int getRowCount() { return availableLocales.length; } public int getColumnCount() { return columnHeaders.length; } public Object getValueAt(int row, int column) { Locale locale = availableLocales[row]; NumberFormat formatter = NumberFormat.getNumberInstance(); switch (column) { case LOCALE_COLUMN: return locale.getDisplayName(); case NUMBER_COLUMN: formatter = NumberFormat.getNumberInstance(locale); break; case CURRENCY_COLUMN: formatter = NumberFormat.getCurrencyInstance(locale); break; case PERCENT_COLUMN: formatter = NumberFormat.getPercentInstance(locale); break; } return formatter.format(currentValue); } public String getColumnName(int column) { return columnHeaders[column]; } } }