【问题标题】:Populate a JCombobox from a text file从文本文件填充 JCombobox
【发布时间】:2013-01-20 11:18:13
【问题描述】:

我已经看过一个较早的问题,答案是如下代码,但如果我使用 netbeans,我已经设计了我的组合框。所以我认为(正如你想象的那样,我对 Java 和 netbeans 还很陌生!)应该更改代码的最后一行,我应该在哪里插入这段代码?

BufferedReader input = new BufferedReader(new FileReader(filePath));
List<String> strings = new ArrayList<String>();
try {
    String line = null;
    while (( line = input.readLine()) != null){
        strings.add(line);
    }
}

catch (FileNotFoundException e) {
    System.err.println("Error, file " + filePath + " didn't exist.");
}
finally {
    input.close();
}

String[] lineArray = strings.toArray(new String[]{});

JComboBox comboBox = new JComboBox(lineArray); 

【问题讨论】:

  • 除非这个输入是从用户那里获得的,否则它很可能变成一个embedded-resource,必须通过URL访问。

标签: java swing netbeans file-io jcombobox


【解决方案1】:

1.这些代码行没用

List<String> strings = new ArrayList<String>();
String[] lineArray = strings.toArray(new String[]{});
JComboBox comboBox = new JComboBox(lineArray); 

2.直接在DefaultComboBoxModel添加一个新的Item,Item也可以排序

3.可能有EDT issue read Concurency in Swing,使用SwingWorker for loading Items from File

【讨论】:

    【解决方案2】:

    您可以通过调用其setModel 方法来更改现有JComboBox 的项目。

    对于它的价值,您可能会发现Files.readAllLines 方法更易于使用:

    try {
        final List<String> lines = Files.readAllLines(Paths.get(filePath),
            Charset.defaultCharset());
    
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                comboBox.setModel(
                    new DefaultComboBoxModel<String>(
                        lines.toArray(new String[0])));
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多