我的加载功能要求我附加TextPane 这是我当前的负载特征
private void loadFile() {
String line;
File file;
JFileChooser dialog = new JFileChooser();
if (dialog.showOpenDialog(text) == JFileChooser.APPROVE_OPTION) {
file = dialog.getSelectedFile();
try {
try (BufferedReader input = new BufferedReader(new FileReader(file))) {
text.setText("");
line = input.readLine();
while (line != null) {
text.append(line + "\n");
line = input.readLine();
}
}
} catch (IOException e) {
JOptionPane.showMessageDialog(text, "Can't load file "
+ e.getMessage());
}
}
}
问题是附加部分,我找不到修复
答案 0 :(得分:2)
再次使用JTextComponent的read(...)
方法,因为这会将文本文件直接读入文本组件。
try (BufferedReader input = new BufferedReader(new FileReader(file))) {
text.read(input, "Text File");
} catch (IOException exp) {
exp.printStackTrace();
}
答案 1 :(得分:1)
GUI更新代码(如text.setText("");
)应该在GUI线程(EDT)中运行,而占用CPU时间的代码(如line = input.readLine();
)应该在后台线程中运行。阅读有关SwingWorker
的更多信息,并阅读本Java教程: