1

我已经阅读了 JEditorPane 文档,据我所知,您只需要 editorpane.setText(String value); 但是我对java很陌生,这个解决方案不适用于我的代码。我想我错过了一些明显但完全没有想法的东西。

我用这个扩展了 JEditorPane 的类创建了一个新选项卡,这个类旨在打开文件的内容,将它们放在一个数组上,反转数组(所以最新条目在顶部)然后在 JEditorPane 中显示这个列表(使用 JeditorPane 因为我需要将保存 url 变成超链接),

public class HistoryPane extends JEditorPane{

ArrayList<String> historyToSort = new ArrayList<String>();

public HistoryPane(){
    setEditable(false); 
    historySort();
}


public void historySort() {

    try (BufferedReader reader = new BufferedReader(new FileReader("BrowserHistory.txt")))
    {

        String currentLine;
        String newLine = new String("\n");

        while ((currentLine = reader.readLine()) != null) {
            historyToSort.add(currentLine + newLine);

        }

    } catch (IOException e) {
        e.printStackTrace();
    } 
    Collections.reverse(historyToSort);
    System.out.println(historyToSort);  
    }

{
}

private void displayHistory(){
    String sorted = historyToSort.toString();
*****   HistoryPane.setText(String sorted); <<<------ PROBLEM SYNTAX.*****

}
}

我在 setText() 括号中尝试了多个不同的条目,但没有成功。我错过了什么?谢谢你。

笔记:

这个类不会编译,因为它依赖于另一个类(我不能全部粘贴),但是这段代码位于我的主类创建的选项卡式窗格中:

错误信息:

线程“AWT-EventQueue-0”java.lang.Error 中的异常:未解决的编译问题:令牌“setText”上的语法错误,此令牌后应有标识符 缺少该方法的返回类型 此方法需要正文而不是分号

4

1 回答 1

1

好的,尽管您还没有阅读错误消息,但您似乎确实是新手,所以我会提供帮助。

HistoryPane.setText(String sorted);

以上不是有效的Java。方法调用采用参数列表,没有类型。

HistoryPane.setText(sorted);

现在这是一个有效的方法调用。但它试图调用一个名为HistoryPane静态方法。您想要的是在当前对象上调用实例方法。所以有效的语法是setText()setText()

this.setText(sorted);

或者干脆

setText(sorted);

那应该解决这个特定的编译错误。在 Eclipse 的 Problems 视图中列出的每个编译错误都得到修复之前,不要尝试运行您的应用程序。

请注意,上面的行不会做你想做的事,但我会让你调查你应该做什么。

我的建议:不要尝试使用 Swing,它是一个相当复杂的野兽,如果你还不知道如何调用方法。从非常简单的 Java 练习开始,不涉及任何 GUI,直到您熟悉 Java 语法,并了解如何阅读、理解和修复基本的编译问题。

于 2013-04-10T16:08:10.253 回答