2013-07-18 2 views
0

Я пытаюсь добавить гиперссылку (которая откроет текстовый файл onclick) внутри текстового поля в JavaFX. До сих пор я написал код, как показано ниже:Добавить гиперссылку внутри текстового поля в JavaFX

Hyperlink link = new Hyperlink(); 
    link.setText("Data Sheet"); 
    link.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent e) { 
      try { 
       java.awt.Desktop.getDesktop().browse(
         java.net.URI.create("MY text file")); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
     } 
    }); 
mytxtarea.appendText("Please cleck here "+link); 

Этот код не работает. На самом деле appendtext не работает. Пожалуйста, помогите.

+0

Не могли бы вы предоставить более подробную информацию о 'mytxtarea'? Что это за тип? –

ответ

1

Вы не можете разместить гиперссылку в TextArea.

A TextArea предназначен для редактирования текста, а не для отображения гиперссылок.

Потенциальные альтернативные решения

  • HTMLEditor - если вы предварительно загрузить HTMLeditor с текстом, который содержит гиперссылку, то HTMLEditor должен отображать гиперссылку OK, если пользователь не будет действительно иметь возможность редактировать Гиперссылка как HTMLEditor не обеспечивает возможности редактирования ссылок.
  • RichTextFX - сторонний элемент управления JavaFX для редактирования синтаксиса выделенного текста, я не знаю, предоставляет ли он функции редактирования ссылок или нет.
  • TextFlow - встроенный элемент управления, который позволяет просматривать только для чтения, который смешивает узлы JavaFX, такие как текст и гиперссылки.
  • WebView with an embedded third party JavaScript based editor - есть источник для многих редакторов на основе JavaScript, доступных в Интернете, которые могут встроить отображение и редактирование гиперссылок, поэтому вы можете использовать один из этих редакторов, встроенный в компонент JavaFX WebView.
  • JavaFX based markdown implementation - Я только что связался с одной такой реализацией, есть другие, доступные в Интернете, если вы их рекламируете.
+0

На самом деле я хочу отобразить текст вместе со ссылкой, которая откроет файл excel при щелчке по нему. Таким образом, используя гиперссылку, это возможно внутри текстовой области? – Arijit

+0

Нет, это невозможно в TextArea. – jewelsea

+1

У меня такие же требования. Какое альтернативное решение? – Mubasher

0

Действительно, вы не можете разместить гиперссылку в TextArea. Но вы можете наложить его на гиперссылки. Например, в моем файле FXML у меня есть:

<TextArea fx:id="textArea"/> 
    <VBox fx:id="box"> 
     <children> 
     </children> 
</VBox> 

И в моем контроллере я добавляю новую гиперссылку в узле «ящик», когда мне нужно, помимо обработки его видимость, как это:

  box.getChildren().clear(); 
      // for each new link you need to add 
       Hyperlink link = new Hyperlink(stringLink); 
       link.setOnAction(new EventHandler<ActionEvent>() { 
        @Override 
        public void handle(ActionEvent t) { 
         // do something 
        } 
       }); 
       box.getChildren().add(link); 
      }); 

а потом, по словам моей работы, у меня есть:

private void setEditMode(final boolean editMode) { 
    textArea.setVisible(editMode); 
    box.setVisible(!editMode); 
} 

в результате гиперссылка появятся «перед» текстовой области, как это накладывается, и тогда вы, вероятно, что вы ожидая.

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