[java]代码库
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
public class SimpleExample extends JPanel {
static JFrame frame;
static Font smallFont;
static Font mediumFont;
static Font bigFont;
private ResourceBundle resources;
private ComponentOrientation co;
private static void applyComponentOrientation(Component c, ComponentOrientation o) {
c.setComponentOrientation(o);
if (c instanceof JMenu) {
JMenu menu = (JMenu)c;
int ncomponents = menu.getMenuComponentCount();
for (int i = 0 ; i < ncomponents ; ++i) {
applyComponentOrientation( menu.getMenuComponent(i), o );
}
} else if (c instanceof Container) {
Container container = (Container)c;
int ncomponents = container.getComponentCount();
for (int i = 0 ; i < ncomponents ; ++i) {
applyComponentOrientation( container.getComponent(i), o );
}
}
}
private void loadResources() {
try {
resources = ResourceBundle.getBundle("resources.Simple",
Locale.getDefault());
} catch (MissingResourceException mre) {
mre.printStackTrace();
System.exit(1);
}
}
private static JFrame getFrame() {
return frame;
}
public SimpleExample() {
// Load our resource bundle
loadResources();
JRadioButton oneButton, twoButton, threeButton;
JButton button;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.getAllFonts();
// Setup the fonts
smallFont = new Font("Bitstream Cyberbit", Font.PLAIN, 14);
mediumFont = new Font("Bitstream Cyberbit", Font.PLAIN, 18);
bigFont = new Font("Bitstream Cyberbit", Font.PLAIN, 20);
co = ComponentOrientation.getOrientation(Locale.getDefault());
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
String language = Locale.getDefault().getLanguage();
// Create the buttons
button = new JButton(resources.getString("Hello"));
button.setToolTipText(resources.getString("HelloToolTip"));
button.setFont(mediumFont);
// Setup the buttons
oneButton = new JRadioButton(resources.getString("One"));
oneButton.setFont(mediumFont);
oneButton.setMnemonic(resources.getString("OneMnemonic").charAt(0));
oneButton.setHorizontalAlignment(JButton.TRAILING);
oneButton.setHorizontalTextPosition(JButton.TRAILING);
twoButton = new JRadioButton(resources.getString("Two"));
twoButton.setFont(mediumFont);
twoButton.setMnemonic(resources.getString("TwoMnemonic").charAt(0));
twoButton.setHorizontalAlignment(JButton.TRAILING);
twoButton.setHorizontalTextPosition(JButton.TRAILING);
threeButton = new JRadioButton(resources.getString("Three"));
threeButton.setFont(mediumFont);
threeButton.setMnemonic(resources.getString("ThreeMnemonic").charAt(0));
threeButton.setHorizontalAlignment(JButton.TRAILING);
threeButton.setHorizontalTextPosition(JButton.TRAILING);
// Group the radio buttons
ButtonGroup group = new ButtonGroup();
group.add(oneButton);
group.add(twoButton);
group.add(threeButton);
// Register a listener for the radio buttons
RadioListener myListener = new RadioListener();
oneButton.addActionListener(myListener);
twoButton.addActionListener(myListener);
threeButton.addActionListener(myListener);
// Setup the button panel
JPanel buttonPanel = new JPanel();
buttonPanel.setMaximumSize(new Dimension(Short.MAX_VALUE,100));
TitledBorder tb = new TitledBorder(resources.getString("Numbers"));
tb.setTitleFont(smallFont);
tb.setTitleJustification(
co.isLeftToRight() ? TitledBorder.LEFT : TitledBorder.RIGHT);
buttonPanel.setBorder(tb);
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(button);
buttonPanel.add(oneButton);
buttonPanel.add(twoButton);
buttonPanel.add(threeButton);
add(buttonPanel, BorderLayout.CENTER);
// Setup the date panel
JPanel datePanel = new JPanel();
datePanel.setMaximumSize(new Dimension(Short.MAX_VALUE,100));
tb = new TitledBorder(resources.getString("Dates"));
tb.setTitleFont(smallFont);
tb.setTitleJustification(
co.isLeftToRight() ? TitledBorder.LEFT : TitledBorder.RIGHT);
datePanel.setBorder(tb);
datePanel.setLayout(new BoxLayout(datePanel,BoxLayout.X_AXIS));
datePanel.add(Box.createRigidArea(new Dimension(5,1)));
DateFormatSymbols dfs = new DateFormatSymbols();
JComboBox months = new JComboBox(dfs.getMonths());
months.setFont(mediumFont);
String weekDays[] = dfs.getWeekdays();
JComboBox days = new JComboBox();
days.setFont(mediumFont);
// Determine what day is the first day of the week
GregorianCalendar cal = new GregorianCalendar();
int firstDayOfWeek = cal.getFirstDayOfWeek();
int dayOfWeek;
for (dayOfWeek = firstDayOfWeek; dayOfWeek < weekDays.length; dayOfWeek++)
days.addItem(weekDays[dayOfWeek]);
for (dayOfWeek = 0; dayOfWeek < firstDayOfWeek; dayOfWeek++)
days.addItem(weekDays[dayOfWeek]);
if (!co.isLeftToRight()) {
datePanel.add(days);
datePanel.add(Box.createRigidArea(new Dimension(5,1)));
datePanel.add(months);
datePanel.add(Box.createRigidArea(new Dimension(5,1)));
} else {
datePanel.add(months);
datePanel.add(Box.createRigidArea(new Dimension(5,1)));
datePanel.add(days);
datePanel.add(Box.createRigidArea(new Dimension(5,1)));
}
add(datePanel);
// Setup the formatting panel
JPanel formatPanel = new JPanel();
formatPanel.setMaximumSize(new Dimension(Short.MAX_VALUE,100));
tb = new TitledBorder(resources.getString("Formats"));
tb.setTitleFont(smallFont);
tb.setTitleJustification(co.isLeftToRight() ?
TitledBorder.LEFT : TitledBorder.RIGHT);
formatPanel.setBorder(tb);
formatPanel.setLayout(new BoxLayout(formatPanel,BoxLayout.X_AXIS));
formatPanel.add(Box.createRigidArea(new Dimension(5,1)));
double theNumber = 1234.56;
NumberFormat nFormat = NumberFormat.getInstance();
NumberFormat cFormat = NumberFormat.getCurrencyInstance();
NumberFormat pFormat = NumberFormat.getPercentInstance();
DateFormat dFormat = DateFormat.getDateInstance();
JLabel numberLabel = new JLabel(nFormat.format(theNumber));
numberLabel.setForeground(Color.black);
numberLabel.setFont(bigFont);
JLabel percentLabel = new JLabel(pFormat.format(theNumber));
percentLabel.setForeground(Color.black);
percentLabel.setFont(bigFont);
JLabel currencyLabel = new JLabel(cFormat.format(theNumber));
currencyLabel.setForeground(Color.black);
currencyLabel.setFont(bigFont);
JLabel dateLabel = new JLabel(dFormat.format(new Date()));
dateLabel.setForeground(Color.black);
dateLabel.setFont(bigFont);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
if (co.isLeftToRight()) {
formatPanel.add(numberLabel);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
formatPanel.add(percentLabel);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
formatPanel.add(currencyLabel);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
formatPanel.add(dateLabel);
} else {
formatPanel.add(dateLabel);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
formatPanel.add(currencyLabel);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
formatPanel.add(percentLabel);
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
formatPanel.add(numberLabel);
}
formatPanel.add(Box.createRigidArea(new Dimension(25,1)));
add(formatPanel);
}
public JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu file =
(JMenu) menuBar.add(new JMenu(resources.getString("FileMenu")));
file.setFont(mediumFont);
file.setMnemonic(resources.getString("FileMenuMnemonic").charAt(0));
JMenuItem exitItem = (JMenuItem)
file.add(new JMenuItem(resources.getString("FileMenuExit")));
exitItem.setFont(mediumFont);
exitItem.setMnemonic(resources.getString("FileMenuExitMnemonic").charAt(0));
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menuBar.add(new LocaleChanger());
return menuBar;
}
public void reloadResources() {
try {
resources = ResourceBundle.getBundle("resources.Simple", Locale.getDefault());
} catch (MissingResourceException mre) {
mre.printStackTrace();
System.exit(1);
}
}
/**
* An ActionListener that listens to the radio buttons
*/
class RadioListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String lnfName = e.getActionCommand();
Object[] options = { resources.getString("OK"), resources.getString("CANCEL") };
Object[] arguments = { new Integer(3), lnfName };
JOptionPane.sho*****tionDialog(null,
MessageFormat.format(resources.getString("WarningMsg"), arguments),
resources.getString("WarningTitle"),
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE,
null, options, options[0]);
try {
} catch (Exception exc) {
JRadioButton button = (JRadioButton)e.getSource();
button.setEnabled(false);
}
}
}
/**
* A class to change the locale for the application
*/
class LocaleChanger extends JMenu implements ItemListener {
public LocaleChanger() {
super();
setText(resources.getString("LanguageMenu"));
setFont(mediumFont);
setMnemonic(resources.getString("LanguageMenuMnemonic").charAt(0));
ButtonGroup langGroup = new ButtonGroup();
String language = Locale.getDefault().getLanguage();
// Sort the language names according to the rules specific to each locale
RuleBasedCollator rbc = (RuleBasedCollator)Collator.getInstance();
ArrayList al = new ArrayList();
al.add(resources.getString("Arabic"));
al.add(resources.getString("Chinese"));
al.add(resources.getString("English"));
al.add(resources.getString("German"));
al.add(resources.getString("Italian"));
al.add(resources.getString("French"));
al.add(resources.getString("Hebrew"));
al.add(resources.getString("Japanese"));
al.add(resources.getString("Russian"));
Collections.sort(al, rbc);
String langName = Locale.getDefault().getDisplayLanguage();
for (int i = 0; i < al.size(); i++) {
JRadioButtonMenuItem mi;
mi = (JRadioButtonMenuItem)
add(new JRadioButtonMenuItem((String)al.get(i)));
mi.setFont(mediumFont);
if (langName.equalsIgnoreCase((String)al.get(i)))
mi.setSelected(true);
mi.addItemListener(this);
langGroup.add(mi);
}
}
public void itemStateChanged(ItemEvent e) {
JRadioButtonMenuItem rb = (JRadioButtonMenuItem) e.getSource();
if (rb.isSelected()) {
String selected = rb.getText();
if (selected.equals(resources.getString("Arabic"))) {
Locale.setDefault(new Locale("ar", "EG"));
co = ComponentOrientation.RIGHT_TO_LEFT;
} else if (selected.equals(resources.getString("English"))) {
Locale.setDefault(Locale.US);
co = ComponentOrientation.LEFT_TO_RIGHT;
} else if (selected.equals(resources.getString("German"))) {
Locale.setDefault(Locale.GERMANY);
co = ComponentOrientation.LEFT_TO_RIGHT;
} else if (selected.equals(resources.getString("Italian"))) {
Locale.setDefault(Locale.ITALY);
co = ComponentOrientation.LEFT_TO_RIGHT;
} else if (selected.equals(resources.getString("French"))) {
Locale.setDefault(Locale.FRANCE);
co = ComponentOrientation.LEFT_TO_RIGHT;
} else if (selected.equals(resources.getString("Hebrew"))) {
Locale.setDefault(new Locale("iw", "IL"));
co = ComponentOrientation.RIGHT_TO_LEFT;
} else if (selected.equals(resources.getString("Chinese"))) {
Locale.setDefault(Locale.CHINA);
co = ComponentOrientation.LEFT_TO_RIGHT;
} else if (selected.equals(resources.getString("Japanese"))) {
Locale.setDefault(Locale.JAPAN);
co = ComponentOrientation.LEFT_TO_RIGHT;
} else if (selected.equals(resources.getString("Russian"))) {
Locale.setDefault(new Locale("ru", "RU"));
co = ComponentOrientation.LEFT_TO_RIGHT;
}
}
SimpleExample panel = new SimpleExample();
SimpleExample.frame.setVisible(false);
SimpleExample.frame.getContentPane().removeAll();
SimpleExample.frame.setJMenuBar(panel.createMenuBar());
SimpleExample.frame.getContentPane().add("Center", panel);
SimpleExample.frame.pack();
SimpleExample.frame.show();
applyComponentOrientation(SimpleExample.getFrame(), co);
}
}
public static void main(String [] argv) {
SimpleExample panel = new SimpleExample();
frame = new JFrame("Simple Example");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
frame.setJMenuBar(panel.createMenuBar());
frame.getContentPane().add("Center", panel);
frame.pack();
frame.setVisible(true);
}
}
//源代码片段来自云代码http://yuncode.net