栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

共享两个组合框的数据源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

共享两个组合框的数据源

我认为这就是罗宾在您帖子中提到的答案中解释的内容。您将原始组合框模型包装到2个单独的组合框模型中,这些模型依赖于原始组合框的数据元素,但实现了自己的选择模型。

import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ComboBoxModel;import javax.swing.DefaultComboBoxModel;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.Jframe;import javax.swing.JPanel;import javax.swing.SwingUtilities;import javax.swing.event.ListDataEvent;import javax.swing.event.ListDataListener;public class SharedDataBetweenComboBoxSample {    public static class MyComboBoxModel extends DefaultComboBoxModel implements ComboBoxModel, ListDataListener {        private DefaultComboBoxModel original;        public MyComboBoxModel(DefaultComboBoxModel original) { super(); this.original = original;        }        @Override        public int getSize() { return original.getSize();        }        @Override        public Object getElementAt(int index) { return original.getElementAt(index);        }        @Override        public void addListDataListener(ListDataListener l) { if (getListDataListeners().length == 0) {     original.addListDataListener(this); } super.addListDataListener(l);        }        @Override        public void removeListDataListener(ListDataListener l) { super.removeListDataListener(l); if (getListDataListeners().length == 0) {     original.removeListDataListener(this); }        }        @Override        public void addElement(Object anObject) { original.addElement(anObject);        }        @Override        public void removeElement(Object anObject) { original.removeElement(anObject);        }        @Override        public int getIndexOf(Object anObject) { return original.getIndexOf(anObject);        }        @Override        public void insertElementAt(Object anObject, int index) { original.insertElementAt(anObject, index);        }        @Override        public void removeAllElements() { original.removeAllElements();        }        @Override        public void removeElementAt(int index) { original.removeElementAt(index);        }        @Override        public void intervalAdded(ListDataEvent e) { fireIntervalAdded(this, e.getIndex0(), e.getIndex1());        }        @Override        public void intervalRemoved(ListDataEvent e) { fireIntervalRemoved(this, e.getIndex0(), e.getIndex1());        }        @Override        public void contentsChanged(ListDataEvent e) { fireContentsChanged(this, e.getIndex0(), e.getIndex1());        }    }    public static void main(String args[]) {        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     final String labels[] = { "A", "B", "C", "D", "E", "F", "G" };     final DefaultComboBoxModel model = new DefaultComboBoxModel(labels);     Jframe frame = new Jframe("Shared Data");     frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);     JPanel panel = new JPanel();     JComboBox comboBox1 = new JComboBox(new MyComboBoxModel(model));     comboBox1.setEditable(true);     JComboBox comboBox2 = new JComboBox(new MyComboBoxModel(model));     comboBox2.setEditable(true);     panel.add(comboBox1);     panel.add(comboBox2);     frame.add(panel, BorderLayout.NORTH);     JButton button = new JButton("Add");     frame.add(button, BorderLayout.SOUTH);     ActionListener actionListener = new ActionListener() {         @Override         public void actionPerformed(ActionEvent actionEvent) {  model.addElement("New Added");         }     };     button.addActionListener(actionListener);     frame.pack();     frame.setVisible(true); }        });    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号