Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图使用文件读取器从文本文件创建JComboBox_Java_Swing_File Io_Jcombobox - Fatal编程技术网

Java 试图使用文件读取器从文本文件创建JComboBox

Java 试图使用文件读取器从文本文件创建JComboBox,java,swing,file-io,jcombobox,Java,Swing,File Io,Jcombobox,我知道如何做这件事的基础。就像我在一个文本文件中有以下内容一样:(每个数字代表一个新行,实际上不在文件中) 项目1 项目2 项目3 以此类推,使用中的示例,我可以很好地填充JComboBoxlist。它将行的字符串添加为组合框选项 我的问题是,我没有使用与上面类似的文本文件,而是如下所示: 项目16.00 项目2.8.00 项目3.9.00 这些数字是价格,我以后必须转换成双倍。但从该文本文件中,价格将包含在JComboBox中,这是我不希望发生的事情。有没有办法指定每行的第一个字符串?文件中每

我知道如何做这件事的基础。就像我在一个文本文件中有以下内容一样:(每个数字代表一个新行,实际上不在文件中)

  • 项目1
  • 项目2
  • 项目3
  • 以此类推,使用中的示例,我可以很好地填充
    JComboBox
    list。它将行的字符串添加为
    组合框
    选项

    我的问题是,我没有使用与上面类似的文本文件,而是如下所示:

  • 项目16.00
  • 项目2.8.00
  • 项目3.9.00

  • 这些数字是价格,我以后必须转换成双倍。但从该文本文件中,价格将包含在
    JComboBox
    中,这是我不希望发生的事情。有没有办法指定每行的第一个字符串?文件中每行的字符串不会超过2个。

    您应该创建一个类来封装此数据,包括项目名称和价格,然后用此类对象填充JComboBox。e、 g

    public class MyItem {
      private String itemName;
      private double itemCost;
      // any more fields?
    
      public MyItem(String itemName, double itemCost) {
        this. ///.....  etc
      }  
    
      // getters and setters
    }
    
    为了让它看起来更漂亮,有一种快速而肮脏的方法:给类a
    toString()
    方法,它只打印项目名称,例如

    @Override
    public String toString() {
      return itemName;
    }
    
    。。。或者一种更复杂、可能更简洁的方法:为JComboBox提供一个只显示项名称的呈现器


    编辑
    你问:


    好的,只是不确定如何传递文件中的值

    您将解析文件并使用数据创建对象。伪代码:

    Create a Scanner that reads the file
    while there is a new line to read
      read the line from the file with the Scanner
      split the line, perhaps using String#split(" ")
      Get the name token and put it into the local String variable, name
      Get the price String token, parse it to double, and place in the local double variable, price
      Create a new MyItem object with the data above
      Place the MyItem object into your JComboBox's model.
    End of while loop
    close the Scanner
    

    好的,只是不确定如何从文件中传递值。非常感谢您的帮助,我相信我能从这里找到答案!好的,我成功了!谢谢我现在唯一的问题是弄清楚如何在文件中获取项目价格和编辑项目价格(如搜索项目名称行并覆盖价格或整行)+1不错的答案,有关ListCellRenderer的详细信息,请参阅显示添加到JComboBox 6.00的项目1和listners的JComboBox