【问题标题】:jList doesn't return desired string valuejList 不返回所需的字符串值
【发布时间】:2014-08-04 12:24:22
【问题描述】:

我是 Java 新手,我尝试编写一个简单的 GUI 应用程序,它应该将 jList 的选定值返回到 textfield

但它不是将选定的文本返回给textField,而是将[Ljava.lang.Object;@675b9599 之类的内存地址返回给textField

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    jTextField1.setText(Arsenal.getSelectedValues().toString()); 
} 

【问题讨论】:

  • 将选中值写入textField的事件为: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText(Arsenal.getSelectedValues().toString()); } //jList中的项是在List编辑器中手动添加的。

标签: java swing user-interface textfield jlist


【解决方案1】:
Arsenal.getSelectedValues()//Returns Array of Object and Deprecated as well
                   -------

改为使用 jList.getSelectedValue() Value 而不是 Values 返回所选元素。所以应该是

jTextField1.setText((String)Arsenal.getSelectedValue());

如果您已将String 添加到您的JList,您甚至不需要将其转换为String,因为它会根据JList 元素的类型返回值。

如果您想获取所有选定的值,请使用 getSelectedValuesList() 而不是 getSelectedValues(),因为它已被弃用。

【讨论】:

  • toString() 方法的反对票现在已被删除,我的反对票已被删除。
【解决方案2】:

您可能在JList 错误中检索到所选元素的文本。 您必须使用getSelectedValue() 来检索它。

String text = (String) myList.getSelectedValue();

没有必要像在myList.getSelectedValue().toString() 中那样调用toString() 方法,因为如果没有选定的值和JList instead returns anull` 值,这可能会导致您出现NullPointerException

Java 文档说:

返回最小选定单元格索引的值;被选中的 仅在列表中选择一个项目时的值。当多个 项目被选中,它只是选择的最小的值 指数。如果没有选择,则返回 null。

【讨论】:

    【解决方案3】:

    JList 只返回Object。所以将其转换为String

    jList.getSelectedValue().toString();
    

    它应该可以工作。

    【讨论】:

    • 如果JList 中没有选定的值,使用toString() 可能会导致NullPointerException,从而返回null
    猜你喜欢
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2014-02-14
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多