【问题标题】:Implementing a custom combo box model failed to override some methods实现自定义组合框模型未能覆盖某些方法
【发布时间】:2015-02-27 15:11:22
【问题描述】:

我正在尝试使用MutableComboBoxModel 接口实现自定义组合框模型,我希望在运行时填充动态数据,特别是从数据库中查询。但我未能覆盖某些方法。有人可以帮助超越或提出更好的方法来实现我的目标吗?

package PiggeryManagementSystem;

import java.util.ArrayList;
import javax.swing.MutableComboBoxModel;
import javax.swing.event.ListDataListener;

/**
 * @author Stanchart
 */
public class MyComboBoxModel  implements MutableComboBoxModel {

    ArrayList <String> columns = new ArrayList();

    public MyComboBoxModel( ArrayList<String> c) {
        this.columns = c;
    }

    @Override
    public void addElement(Object item) {

    }

    @Override
    public void removeElement(Object obj) {

    }

    @Override
    public void insertElementAt(Object item, int index) {
        columns.get(index);
    }

    @Override
    public void removeElementAt(int index) {

    }

    @Override
    public void setSelectedItem(Object anItem) {

    }

    @Override
    public Object getSelectedItem() {
        return columns.getClass();
    }

    @Override
    public int getSize() {
        return columns.size();
    }

    @Override
    public Object getElementAt(int index) {
        return columns.get(index);
    }

    @Override
    public void addListDataListener(ListDataListener l) {

    }

    @Override
    public void removeListDataListener(ListDataListener l) {

    }

}

【问题讨论】:

    标签: java swing jcombobox swingx comboboxmodel


    【解决方案1】:

    我已经设法弄清楚了。非常感谢。

    package PiggeryManagementSystem;
    
    import java.util.ArrayList;
    import javax.swing.MutableComboBoxModel;
    import javax.swing.event.ListDataListener;
    
    /**
     * @author Stanchart
     */
    public class MyComboBoxModel  implements MutableComboBoxModel {
    
        private Object selectedItem;     
        ArrayList <String> columns = new ArrayList();
    
        public MyComboBoxModel( ArrayList<String> c) {
           this.columns = c;
        }
    
        @Override
        public void addElement(Object item) {
            columns.add(item.toString());
        }
    
        @Override
        public void removeElement(Object obj) {
            columns.remove(obj.toString());
        }
    
        @Override
        public void insertElementAt(Object item, int index) {
            columns.get(index);
        }
    
        @Override
        public void removeElementAt(int index) {
            columns.remove(index);
        }
    
        @Override
        public void setSelectedItem(Object anItem) {
            selectedItem = anItem;   
        }
    
        @Override
        public Object getSelectedItem() {
            return selectedItem;
        }
    
        @Override
        public int getSize() {
            return columns.size();
        }
    
        @Override
        public Object getElementAt(int index) {
            return columns.get(index);
        }
    
        @Override
        public void addListDataListener(ListDataListener l) {
    
        }
    
        @Override
        public void removeListDataListener(ListDataListener l) {
    
        }    
    }
    

    【讨论】:

    • 仍然缺少添加/删除 ListDataListeners。 EventListenerList 类旨在保留不同类型的侦听器列表,并将帮助您实现这些方法。另请注意,columns 属性应该是 private 并且可能是 final
    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2019-03-22
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多