0

私はすでに古い質問を見たことがあり、答えは以下のようなコードでしたが、netbeans を使用する場合、comboBox は既に設計されています。だから私は(あなたが想像するように、私は 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に直接追加します。アイテムも並べ替えることができます

3.EDTの問題がSwingのConcurencyを読み取り、ファイルからアイテムをロードするためにSwingWorkerを使用する可能性があります

于 2013-01-20T11:32:16.267 に答える
0

メソッドを呼び出すことで、既存の JComboBox の項目を変更できますsetModel

それだけの価値があるため、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 に答える