java - jcombobox setSelectedItem

标签 java swing

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

  1. 当我执行 setSelectedIndex () 时,代码运行良好。
  2. 我正在尝试按值设置所选项目。所以我尝试创建另一个具有相同值(变量名 d)的对象,并执行 setSelectedItem 但失败。当我尝试打印选定的项目时,它不会打印“C C”。它打印之前选择的项目“B B”

那么如何按值设置selectedItem呢?做建议。 非常感谢!

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;
    }
}

最佳答案

等于和哈希码问题。下面应该可以解决问题。

  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;
    }

关于java - jcombobox setSelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37849185/

相关文章:

java - 如何在Jtable中的多行中设置焦点?

java - jtextarea 视口(viewport)中的第一行和最后一行

java - 安卓:撤销权限

java - 异步任务变慢问题

java - 如何将 JFrame 设置为 JDialog 的父级

java - 如何在java中使用for循环清除文本字段

java - 编程新手,JDK 与 Android Studio 2.2 Preview 1 捆绑在一起?

Java URLrewrite 过滤器 - 传递参数

java - 构造函数的开闭原则

java - 编译代码后不出现JFrame