我正在尝试在JavaFX中的textarea中添加一个超链接(它将打开一个文本文件onclick)。 到目前为止,我已经编写了如下代码:
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);
此代码无效。实际上附加文字没有用。请帮忙。
答案 0 :(得分:1)
您不能在TextArea中放置超链接。
TextArea用于编辑文字,不显示超链接。
潜在的替代解决方案
答案 1 :(得分:0)
实际上,您无法在TextArea中放置超链接。但您可以将其与超链接重叠。例如,在我的fxml文件中,我有:
.horizontal-scroll {
overflow-x: scroll;
white-space: nowrap;
width:1000px;
}
<ion-scroll direction="x" scrollbar-x="false" overflow-scroll="false">
<div class="horizontal-scroll">
<ion-item style="float:left" ng-repeat="otherRides in allRides" href="#/tab/others/{{others.ID}}">
<img ng-src="{{others.icon}}" style="float:left">
Time: {{others.time}}
<br>Est: <span ${{others.price}}
</ion-item>
</div>
</ion-scroll>
在我的控制器中,我在&#34;框中添加了一个新的超链接&#34;节点,当我需要,除了处理他的可见性,像这样:
<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);
});
结果是超链接将出现在&#34;前面。文本区域,因为它被覆盖,然后你可能会有你期望的。