JEdi​​torPane - 来自ArrayList <string> contents?</string>的setText

时间:2013-04-10 15:30:19

标签: java swing arraylist jeditorpane

我已经阅读了JEditorPane文档,从我能理解的你只需要editorpane.setText(String value);但是我对java很新,这个解决方案不能用于我的代码。我想我错过了一些显而易见但完全没有想法的东西。

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

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”上的语法错误,此令牌后预期的标识符     缺少方法的返回类型     此方法需要正文而不是分号

1 个答案:

答案 0 :(得分:1)

好吧,尽管你没有看过错误信息,但看起来你真的是个新手,所以我会帮忙的。

HistoryPane.setText(String sorted);

以上是无效的Java。方法调用接受一个参数列表,没有类型。

HistoryPane.setText(sorted);

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

this.setText(sorted);

或只是

setText(sorted);

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

请注意,上述行不符合您的要求,但我会让您调查应该做的事情。

我的建议:如果你甚至不知道如何调用方法,请不要尝试使用Swing,这是一个非常复杂的野兽。在熟悉Java语法之前,先从非常简单的Java练习开始,不涉及任何GUI,并了解如何阅读,理解和修复基本的编译问题。