java - 使用 toString 方法但组合框仍然不显示值

标签 java swing tostring

我的 Java 应用程序中有一个 JFrame 表单,它有几个组合框,它们按应有的方式填充,除了一个显示没有意义的内容(例如 Transfer.TransferObject@859ae5....),我做了组合框引用的类中的 toString 方法(我对其他组合框做了同样的事情,它们正常工作),但是这个组合仍然显示此传输。TransferObject@859ae5... 例如,mz 组合框应显示患者姓名,因此在患者类中我执行以下操作:

@Override
public String toString() {
    return name;
}

但它每次都有效,除了现在这个组合。问题是什么? 谢谢

最佳答案

重写toString方法应该可以工作,但不是一个好的做法。我建议您实现一个 ListCellRenderer 相反,如下所示:

public class MyCellRenderer extends DefaultListCellRenderer {
    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        if(value != null){
            if(value instanceof Patient){
                Patient p = (Patient) value;
                setText(p.getName());
            } else {
                setText(value.toString());
            }
            if(isSelected){
                setBackground(...);//set background color when item is selected
                setForeground(...);//set foreground color when item is selected
            } else {
                setBackground(...);//set background color when item is not selected
                setForeground(...);//set foreground color when item is not selected
            }
                return this;
        } else {
            // do something
            return this;
        }
    }

}//end of MyClass declaration

然后,您必须在向 JComboBox 添加项目之前将此类的一个实例设置为 JComboBox:

yourJComboBox.setRenderer(new MyCellRenderer());
/* Now you can add items to your combo box */

关于java - 使用 toString 方法但组合框仍然不显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547974/

相关文章:

java - 获取流的最后一个元素的最有效方法

java - 如何使用 android studio 让 1 个按钮在每次按下按钮时播放随机声音

java - 什么代码用于绘制单个对象,而不使用 repaint() 方法更新整个屏幕?

java - 在 Android 项目中使用 EditText.toString() 方法取回奇怪的文本。为什么?

c# - 有更好看的方法吗? (int 字符串)

java - 我可以为 SLF4J 和 Logback 使用 Log4j.xml 配置吗?

java - Android SU 权限 : How to use them?

Java Netbeans 覆盖 JPanel 中的 paint() 方法

java - 如何将jframe中的组件移动到某个位置

c# - 是否有等效于 Java 的 ToStringBuilder for C#?一个好的 C# 版本有什么特点?