【问题标题】:JEditorPane - setText from ArrayList<String> contents?JEdi​​torPane - 来自 ArrayList<String> 内容的 setText?
【发布时间】:2013-04-02 13:12:26
【问题描述】:

我已经阅读了 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”上的语法错误,此令牌后应有标识符 缺少该方法的返回类型 此方法需要正文而不是分号

【问题讨论】:

  • 什么不起作用?您希望这段代码做什么,而它又做了什么?
  • 你在哪里打电话给setText()
  • 抱歉,我希望代码能够在编辑器窗格的屏幕上显示我的数组(文件中的历史行)。我在最底部调用它“HistoryPane.setText(String sorted);”或者我认为....我认为这会设置在 JEditorPane 上显示的文本。问题是我从 IDE 收到错误,它不接受 STRING 和 Value 到 setText() ...它只是提供了没有一个有效的建议。
  • 代码甚至无法编译。那是问题吗?如果是这样,您是否尝试过阅读和理解来自编译器的错误消息?他们说什么?
  • 我已经用创建这个类的主类部分更新了问题(因此为什么它不会编译)问题是我无法在“HistoryPane.setText(字符串排序) ;" ...我认为这会在编辑器窗格中显示我的数组中的文本....但它不会接受我的措辞。

标签: java swing arraylist jeditorpane


【解决方案1】:

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

HistoryPane.setText(String sorted);

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

HistoryPane.setText(sorted);

现在这是一个有效的方法调用。但它会尝试调用class HistoryPane 的名为setText()static 方法。你想要的是在当前对象上调用instance方法setText()。所以有效的语法是

this.setText(sorted);

或者干脆

setText(sorted);

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

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

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

【讨论】:

  • 谢谢,我对 JEditorPane 的措辞感到困惑,再加上缺乏经验,最终如您所说。我还注意到我什至没有调用不起作用的方法。我漏掉了一条线。感谢您的耐心等待。
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2020-03-20
  • 2011-06-06
  • 2014-06-30
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多