日期:2014-05-20  浏览次数:20692 次

怎么实现jcombobox中值和显示不同
如显示是中国,但要取得当前被选的中国的值是china

------解决方案--------------------
你可以写二个数组:一个对应中文(界面显示),一个对应英文(你所需要的值) 注意位置的相对应;
把中文数组传给JComboBox 的ComboBoxModel;
当选择了时,通过getSelectedIndex()方法得到选择的对应中文数组中索引.
再根据索引取得英文数组中对应索引中的值.


你知道两个JComboBox 绑定不?哪个也可以实现.

下面是一个例子:
希望对你有用:仅供参考.

Java code


import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class JComboboxTest extends javax.swing.JFrame {
    private JPanel jPanel1;
    private JComboBox jComboBox1;

    private String[] zh = new String[] { "中国", "美国" };

    private String[] en = new String[] { "China", "USA" };

    private ComboBoxModel jComboBox1Model = new DefaultComboBoxModel(zh);

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JComboboxTest inst = new JComboboxTest();
                inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }

    public JComboboxTest() {
        super();
        initGUI();
    }

    private void initGUI() {
        try {
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            {
                jPanel1 = new JPanel();
                getContentPane().add(jPanel1, BorderLayout.CENTER);

                jComboBox1 = new JComboBox();
                jPanel1.add(jComboBox1);
                jComboBox1.setModel(jComboBox1Model);
                jComboBox1.addItemListener(new ItemListener() {
                    public void itemStateChanged(ItemEvent evt) {
                        jComboBox1ItemStateChanged(evt);
                    }
                });

            }
            pack();
            setSize(400, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    private void jComboBox1ItemStateChanged(ItemEvent evt) {
        if(evt.getStateChange()==1)
        JOptionPane.showMessageDialog(null, "你选择的是:"+evt.getItem()+"    "+en[this.jComboBox1.getSelectedIndex()]);
    }

}