0

我已经看到了一个较旧的问题,答案是下面的代码,但是如果我使用 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); 
4

2 回答 2

6

1.这些代码行没用

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

2.直接在DefaultComboBoxModel中添加一个New Item ,Items也可以排序

3.在 Swing 中读取Concurency 可能存在EDT 问题,使用SwingWorker 从文件加载项目

于 2013-01-20T11:32:16.267 回答
0

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();
}
于 2013-01-20T14:46:17.417 回答