现在实验室开发了一款软件,想实现多种语言的切换,不知道如何实现?望指点,谢谢!
具体说来:就是在菜单栏里有一个选择语言的选项,选了相应的语言之后,整个软件不重启的情况下变成相应的语言的版本,不知道是否表述清楚

解决方案 »

  1.   

    首先界面上的文字根据语言从资源文件中读取。
    然后让所有界面都实现接口,比如:refresh(byte language)
    调用后刷新界面。
      

  2.   

    这个就烦啊,没点技术难度。
    public class NewJFrame extends javax.swing.JFrame {
        private static java.util.ResourceBundle resources=
               java.util.ResourceBundle.getBundle("softwareResources");
        public NewJFrame() {
            initComponents();
        }
                   
        private void initComponents() {        jLabel1 = new javax.swing.JLabel();
            jTextField1 = new javax.swing.JTextField();
            jLabel2 = new javax.swing.JLabel();
            jTextField2 = new javax.swing.JTextField();
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jRadioButtonMenuItem1 = new javax.swing.JRadioButtonMenuItem(
                    java.util.Locale.CHINA.getDisplayName(java.util.Locale.ENGLISH));
            jRadioButtonMenuItem2 = new javax.swing.JRadioButtonMenuItem(
                    java.util.Locale.CHINA.getDisplayName(java.util.Locale.ENGLISH));        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jMenu1.setText("File");
            jRadioButtonMenuItem1.setText("English");
            jRadioButtonMenuItem1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jRadioButtonMenuItem2.setSelected(false);
                    resources=java.util.ResourceBundle.getBundle("softwareResources",java.util.Locale.ENGLISH);
                    updateLabel();
                }
            });
            jMenu1.add(jRadioButtonMenuItem1);        jRadioButtonMenuItem2.setSelected(true);
            jRadioButtonMenuItem2.setText("Chinese");
            jRadioButtonMenuItem2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jRadioButtonMenuItem1.setSelected(false);
                    resources=java.util.ResourceBundle.getBundle("softwareResources",java.util.Locale.CHINA);
                    updateLabel();
                }
            });
            jMenu1.add(jRadioButtonMenuItem2);
            jMenuBar1.add(jMenu1);
            setJMenuBar(jMenuBar1);
            updateLabel();
            setLayOut();
            pack();
        }
        private void setLayOut()
        {
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jLabel1)
                                    .addGap(18, 18, 18)
                                    .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE))
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jLabel2)
                                    .addGap(18, 18, 18)
                                    .addComponent(jTextField2)))
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(13, 13, 13)
                            .addComponent(jButton1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
                            .addComponent(jButton2)
                            .addGap(56, 56, 56))))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel1)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel2)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton1)
                        .addComponent(jButton2))
                    .addContainerGap(19, Short.MAX_VALUE))
            );
        }
        private void updateLabel(){
            jLabel1.setText(resources.getString("Label_Text_Name"));
            jLabel2.setText(resources.getString("Label_Text_Class"));
            jButton1.setText(resources.getString("Button_Label_Sure"));
            jButton2.setText(resources.getString("Button_Label_cancel"));
        }    public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new NewJFrame().setVisible(true);
                }
            });
        }    // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenu jMenu2;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem1;
        private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem2;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextField jTextField2;
        // End of variables declaration                   }softwareResources_en.propertiesButton_Label_Sure=Sure
    Button_Label_cancel=cancel
    Label_Text_Name=Name:
    Label_Text_Class=Class:softwareResources_zh_CN.propertiesButton_Label_Sure=\u786e\u5b9a
    Button_Label_cancel=\u53d6\u6d88
    Label_Text_Name=\u59d3\u540d:
    Label_Text_Class=\u73ed\u7ea7: