首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jcombobox setSelectedItem

jcombobox setSelectedItem
EN

Stack Overflow用户
提问于 2016-06-16 03:02:32
回答 1查看 840关注 0票数 0

我创建了一个包含三个项目的组合框。我正在尝试按索引和值设置所选的项。

  1. 当我执行setSelectedIndex ()时,代码工作得很好。
  2. 我正在尝试按值设置所选项目。因此,我尝试创建另一个具有相同值(变量名称d)的对象,并执行setSelectedItem,但它失败了。当我尝试打印出selectedItem时,它不会打印“C C”。它打印先前选定的项目' B‘。

那么如何根据值来设置selectedItem呢?做点建议。非常感谢!

代码语言:javascript
复制
import javax.swing.JComboBox;

public class testt {

    public static void main(String[] args) {

        obj a = new obj("A A");
        obj b = new obj("B B");
        obj c = new obj("C C");

        obj[] lst = { a, b, c };

        JComboBox box = new JComboBox(lst);
        box.setSelectedIndex(1);
        System.out.println("value is:"+((obj) box.getSelectedItem()).toString());

        obj d = new obj("C C");
        box.setSelectedItem(d);
        System.out.println(value is:"+((((obj) box.getSelectedItem()).toString());
    }
}

class obj {
    String value;    
    public obj(String value) {
        this.value = value;
    }    
    public String toString() {
        return value;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 03:19:45

等于和哈希码问题。以下是解决问题的办法。

代码语言:javascript
复制
  class obj {
    String value;    
    public obj(String value) {
        this.value = value;
    }    
    public String toString() {
        return value;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 17 * hash + Objects.hashCode(this.value);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final obj other = (obj) obj;
        if (!Objects.equals(this.value, other.value)) {
            return false;
        }
        return true;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37849185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档