我最近改为JTextPane,我的加载功能已经破坏

时间:2015-03-14 14:33:57

标签: java swing netbeans loading jtextpane

我的加载功能要求我附加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());
            }
        }
    }

问题是附加部分,我找不到修复

2 个答案:

答案 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教程: