小弟初学者。我想在JComboBox框中选一个对象,然后在List框中显示相应的信息。如:在JComboBox框中有 “蔬菜”和“水果”俩项,那么我如果选中“水果”,在List框中显示“菠萝”,“橘子”,“苹果”。我主要是想通过ListModel方法来实现。谢谢高人指点

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.*;public class Test extends JFrame { private JComboBox com = null; private String[] str = { "水果", "蔬菜" }; private JList list = null; private DataModel data = null; public Test() {
    com = new JComboBox(str);
    com.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    select();
    }
    });
    data = new DataModel();
    list = new JList(data);
    this.select();
    this.getContentPane().add(com, BorderLayout.NORTH);
    this.getContentPane().add(list);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 200);
    this.setVisible(true);
    } public void select() {
    if (com.getItemAt(com.getSelectedIndex()).equals("水果")) {
    data.removeAll();
    data.addData("苹果");
    data.addData("西瓜");
    data.addData("人参果");
    }
    if (com.getItemAt(com.getSelectedIndex()).equals("蔬菜")) {
    data.removeAll();
    data.addData("黄瓜");
    data.addData("白菜");
    data.addData("西葫芦");
    }
    list.updateUI();
    } public static void main(String[] args) {
    new Test();
    }
    }class DataModel extends AbstractListModel { private Vector data = null; public DataModel() {
    data = new Vector();
    } public DataModel(Object[] listData) {
    data = new Vector();
    for (int i = 0; i < listData.length; i++) {
    data.add(listData[i]);
    }
    } public void addData(Object o) {
    data.add(o);
    } public void removeIndex(int index) {
    data.remove(index);
    } public void removeAll() {
    data = new Vector();
    } public int getSize() {
    return data.size();
    } public Object getElementAt(int index) {
    return data.get(index);
    }
    }