2013-04-10 2 views
0

Я прочитал JEditorPane Docs, из чего я могу понять, вам просто нужно editorpane.setText (String value); однако я совершенно новый для java, и это решение не работает с моим кодом. Я думаю, что мне не хватает чего-то очевидного, но полностью из идей.JEditorPane - setText from ArrayList <String> содержание?

Я создал новую вкладку с этим классом, которая расширяет 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() круглые скобки, не повезло. Что мне не хватает? Спасибо.

Примечание:

Этот класс не будет компилироваться, так как это зависит от другого класса (я не могу вставить все это), но этот код находится в пределах вкладок панели, созданной мой основной класс:

сообщение

Ошибка:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: Syntax error on token "setText", Identifier expected after this token Return type for the method is missing This method requires a body instead of a semicolon

+0

Что не работает? Что вы ожидаете от этого кода, и что он делает? –

+0

Где вы называете 'setText()'? – ApproachingDarknessFish

+0

Извинения, я ожидал, что код отобразит мой массив (строки истории из файла) на экране в панели редактора. Я называю это в самом низу «HistoryPane.setText (String sorted)»; или так я думал .... Я думал, что установит текст, отображаемый на JEditorPane. Проблема в том, что я получаю ошибки из среды IDE, которые просто не принимают STRING и значение в setText() ...он просто предлагает предложения, ни одна из которых не является действительной. –

ответ

1

ОК, несмотря на то, что вы не читали сообщение об ошибке, это, кажется, вы действительно новичок, так что я буду помогать.

HistoryPane.setText(String sorted); 

Вышесказанное не относится к Java. Вызов метода принимает список аргументов без типа.

HistoryPane.setText(sorted); 

Теперь это действительный метод вызова. Но он пытается вызвать статический метод под названием setText()класс HistoryPane. Вы хотите вызвать метод setText() на текущий объект. Таким образом, действительный синтаксис

this.setText(sorted); 

или просто

setText(sorted); 

Это должно решить эту конкретную ошибку компиляции. Не пытайтесь запустить приложение до того, как будет исправлена ​​любая ошибка компиляции, указанная в представлении «Проблемы» Eclipse.

Обратите внимание, что указанная выше строка не будет делать то, что вы хотите, но я дам вам возможность изучить, что вы должны делать.

Мой совет: не пытайтесь использовать Swing, который является довольно сложным зверем, если вы даже не знаете, как назвать метод еще. Начните с очень простых упражнений Java, не связанных с графическим интерфейсом, пока вы не знакомы с синтаксисом Java и не поймете, как читать, понимать и исправлять основные проблемы с компиляцией.

+0

Спасибо, я смутил себя формулировкой JEditorPane, которая в сочетании с отсутствием опыта закончилась, как вы сказали. Также я заметил, что даже не назвал метод, который не работал. Я пропустил линию. Спасибо за ваше терпение. –

Смежные вопросы