我已经阅读了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”上的语法错误,此令牌后预期的标识符 缺少方法的返回类型 此方法需要正文而不是分号
答案 0 :(得分:1)
好吧,尽管你没有看过错误信息,但看起来你真的是个新手,所以我会帮忙的。
HistoryPane.setText(String sorted);
以上是无效的Java。方法调用接受一个参数列表,没有类型。
HistoryPane.setText(sorted);
现在这是一个有效的方法调用。但它尝试调用类 HistoryPane中名为setText()
的静态方法。您想要的是在当前对象上调用实例方法setText()
。所以有效的语法是
this.setText(sorted);
或只是
setText(sorted);
这应该解决这个特定的编译错误。在Eclipse的Problems视图中列出的每个编译错误都修复之前,请不要尝试运行您的应用程序。
请注意,上述行不符合您的要求,但我会让您调查应该做的事情。
我的建议:如果你甚至不知道如何调用方法,请不要尝试使用Swing,这是一个非常复杂的野兽。在熟悉Java语法之前,先从非常简单的Java练习开始,不涉及任何GUI,并了解如何阅读,理解和修复基本的编译问题。