有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在JComboBox中实现最近使用的或收藏夹下拉列表

我正在寻找将收藏夹/MRU类型行为添加到JComboBox的代码

我可以自己编写代码,但看起来肯定有人已经这么做了

我发现了以下内容(看起来与我想要的一模一样,但源代码还远远不够完整):http://java.sys-con.com/node/36658

有什么建议吗?我需要保持这种相对轻量级,所以我不希望使用作为单片小部件库一部分的组件,而更希望使用开源


共 (2) 个答案

  1. # 1 楼答案

    那就把JComboBox子类化并覆盖

    public void addItem(Object anObject)
    

    给它你想要的功能

    你只需要保持一个项目的内部列表与有效的同步,每当你添加一个新项目时,它就可以检查size() >= maxItems并减少最近的项目

    然后,您应该找到一种方法,在使用项目时刷新它。如果它的选择足够刷新,你可以写一个ItemListener来完成它。否则,您将需要指定的外部动作或观察者/可观察模式

  2. # 2 楼答案

    考虑扩展^{}:重写^ {< CD2>}和^ {< CD3>},插入零并删除最后一个元素。

    附录:这里有一个例子;根据SO,许可证是cc-wiki。我会使用^{}来保存条目

    class MRUComboBoxModel extends DefaultComboBoxModel {
    
        @Override
        public void addElement(Object element) {
            this.insertElementAt(element, 0);
        }
    
        @Override
        public void insertElementAt(Object element, int index) {
            super.insertElementAt(element, 0);
            int size = this.getSize();
            if (size > 10) {
                this.removeElementAt(size - 1);
            }
        }
    }