原文链接

HyperLink控件,它用于将文本格式化为超链接

Hyperlink类是另一种Labeled控件

超链接的三种状态

Hyperlink控件的三种状态

创建一个Hyperlink

典型的Hyperlink

Hyperlink link = new Hyperlink();
link.setText("http://example.com");
link.setOnAction((ActionEvent e) -> {
    System.out.println("This link is clicked");
});

setText方法定义了定义了超链接的文本标题。因为Hyperlink类是Labeled类的一个扩展,所以你可以为超链接设置特定的字体和文本填充颜色。setOnAction方法会设置一个特定的动作(Action),该Action会在超链接被单击时调用,这与Button控件中此方法的功能类似

链接到本地内容

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;public class HyperLinkLocal extends Application {final static String[] imageFiles = new String[]{//图片路径静态数组"folder_16.jpg","folder_16.jpg","folder_16.jpg","folder_16.jpg"};final static String[] captions = new String[]{//标题字样字符串数组"Products","Education","Partners","Support"};final ImageView selectedImage = new ImageView();//图形视图区创建final ScrollPane list = new ScrollPane();//滚动面板布局数组final Hyperlink[] hpls = new Hyperlink[captions.length];//超级链接对象数组final Image[] images = new Image[imageFiles.length];//创建图片数组public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group());//创建场景对象stage.setTitle("Hyperlink Sample");//设置舞台标题stage.setWidth(300);//设置舞台窗口标题stage.setHeight(200);//设置高度selectedImage.setLayoutX(100);//设置图片区域看度selectedImage.setLayoutY(10);//设置图片区域高度for (int i = 0; i < captions.length; i++) {final Hyperlink hpl = hpls[i] = new Hyperlink(captions[i]);//创建超级链接对象final Image image = images[i] = new Image(getClass().getResourceAsStream(imageFiles[i]));//加载并创建图片对象hpl.setOnAction((ActionEvent e) -> {selectedImage.setImage(image);//图片视图区域更换图片});//超级链接对象鼠标点击事件处理回调函数}final Button button = new Button("Refresh links");//按钮的创建button.setOnAction((ActionEvent e) -> {//按钮事件回调函数的编写for (int i = 0; i < captions.length; i++) {hpls[i].setVisited(false);//设置超级链接对象的已经被访问的外观属性selectedImage.setImage(null);//设置图片显示区域内容为空}});VBox vbox = new VBox();//创建垂直盒子布局对象vbox.getChildren().addAll(hpls);//创建超级链接对象添加到垂直盒子布局对象中vbox.getChildren().add(button);//垂直盒子布局对象中添加按钮对象vbox.setSpacing(5);//设置布局盒子对象中元素之间的间隙距离((Group) scene.getRoot()).getChildren().addAll(vbox, selectedImage);//节点组对象中添加垂直布局盒子和图片视图区域对象stage.setScene(scene);//舞台设置场景stage.show();//舞台展现}
}

此程序在一个for循环中创建了四个Hyperlink对象。每个超链接都通过setOnAction定义了当用户点击时会触发的行为。在这种情况下,images数组中对应的图片会被设置给selectedImage变量

当用户点击超链接时,超链接会变成被访问过的状态。你可以使用Hyperlink类的setVisited方法来刷新链接

由于Hyperlink类是Labeled类的一个扩展,因此你除了可以设定文本标题超链接,还可以设置图片超链接。下面示例程序将会同时使用文本和图片超链接,并且会加载远程的HTML页面

链接到远程内容

在JavaFX应用程序中你可以通过在程序场景(Scene)中嵌入WebView浏览器来展示HTML内容。WebView组件提供了基本的Web页面浏览功能。它会对Web页面进行渲染并支持用户交互,例如链接导航、JavaScript指令执行等

下列程序:

创建了四个带有文本和图片的超链接。当一个超链接被点击时,对应的值会作为URL传递给嵌入的浏览器 (WebView类型对象)

超链接在for循环中被创建。在为每个超链接设置的Action中,将一个从urls数组中取出的URL传递给了表示内嵌浏览器的WebEngine对象

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;public class HyperLinkWithWebView extends Application {final static String[] imageFiles = new String[]{//本地图片名称数组"folder_16.jpg","folder_16.jpg","folder_16.jpg","folder_16.jpg"};final static String[] captions = new String[]{//标题字样字符串数组"oracle","Education","Partners","Support"};final static String[] urls = new String[]{//超级链接url数组"http://www.oracle.com/us/products/index.html","http://education.oracle.com/","http://www.oracle.com/partners/index.html","http://www.oracle.com/us/support/index.html"};final ImageView selectedImage = new ImageView();//创建图形视图区域对象final Hyperlink[] hpls = new Hyperlink[captions.length];//创建超级链接对象数组final Image[] images = new Image[imageFiles.length];//创建图片对象数组public static void main(String[] args){launch(args);}@Overridepublic void start(Stage stage) {VBox vbox = new VBox();//创建垂直盒子布局对象Scene scene = new Scene(vbox);//创建场景对象,并且挂载上文定义的垂直布局盒子对象stage.setTitle("超级链接示例");stage.setWidth(570);//舞台宽度设置stage.setHeight(550);//舞台高度设置selectedImage.setLayoutX(100);//图片视图区域x轴坐标设置selectedImage.setLayoutY(10);//图片视图区域y轴坐标设置final WebView browser = new WebView();//创建WebView类型嵌入式浏览器对象final WebEngine webEngine = browser.getEngine();//获取WebEngine类型web引擎对象for (int i = 0; i < captions.length; i++) {final Hyperlink hpl = hpls[i] = new Hyperlink(captions[i]);//创建超级链接对象final Image image = images[i] =new Image(getClass().getResourceAsStream(imageFiles[i]));//加载并创建图片对象hpl.setGraphic(new ImageView (image));//设置链接对象的外观图形hpl.setFont(Font.font("Arial", 14));//设置超级链接对象的字体final String url = urls[i];//设置url值hpl.setOnAction((ActionEvent e) -> {//超级链接对象的鼠标点击事件处理回调函数webEngine.load(url);//web引擎加载http类型url对应的web资源});}HBox hbox = new HBox();//创建水平盒子布局器hbox.setAlignment(Pos.BASELINE_CENTER);//设置水平盒子对象中的被布局元素的对齐方式hbox.getChildren().addAll(hpls);//水平盒子布局对象上添加超级链接vbox.getChildren().addAll(hbox, browser);//垂直盒子布局对象上添加水平盒子布局对象和WebView类型浏览器对象VBox.setVgrow(browser, Priority.ALWAYS);stage.setScene(scene);//舞台设置场景stage.show();//舞台展现}
}

javaFX 学习之 超链接(HyperLink) 转载相关推荐

  1. javaFX学习之TreeView组件(转载)

    转载:http://www.javafxchina.net/blog/2015/04/doc03_treeview/ javaFX应用程序中如何构建树形结构,如何向树视图中增加项.处理事件.通过实现和 ...

  2. 在Windows Mobile和Wince(Windows Embedded CE)下进行WTL开发,如何加入超链接(HyperLink)

    本文讲述在Windows Mobile和Wince(Windows Embedded CE)下进行WTL开发,如何加入超链接(HyperLink)的支持. 步骤如下: 1.#include <a ...

  3. JavaFX学习之道:JavaFX之TableView

     TableView表     TableColumn列  构建一个表主要有TableView,TableColumn,ObservableList,Bean.  加入列table.getColumn ...

  4. MaxScript 学习笔记【有转载】

    MaxScript 学习笔记[有转载] 1. string string类型的变量是一个数组,下列操作合法: strName = $.name -- output: "Shemmy_03&q ...

  5. JavaFX学习之Web

    PopupFeatures 处理新窗口     WebHistory  网页一般都带有历史记录的功能,可以回退,也可以前进,fx用WebHistory处理. Java代码   final WebHis ...

  6. 学习组合模式,转载一段有关组合模式的详解

                   学习组合模式,转载一段有关组合模式的详解,从定义中可以看出,组合模式用来表示部分与整体的层次结构(类似于树结构),而且也可以使用户对单个对象(叶子节点)以及组合对象( 飞 ...

  7. 大数据学习之路(转载)

    #大数据学习之路(转载) 博文地址https://blog.csdn.net/zys_1997/article/details/78358992 看到一个博主写的大数据学习路线,看了比较心动,想着自己 ...

  8. javaFx学习之分页控件Pagination

    原文链接:DOC-03-27 分页控件(Pagination Control) | JavaFX中文资料 JavaFX程序中添加分页(Pagination)控件.它会告诉你如何向程序中添加Pagina ...

  9. 程序员学习视频教程汇总——(转载)

    Java: 传智播客 Javaweb 之商城项目讲解        链接:http://pan.baidu.com/s/1c2HMXck 密码:ix8b 传智播客javaweb之JBPM框架详解   ...

  10. J2SE学习标准篇(转载)

    时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪 ...

最新文章

  1. 排序算法---希尔排序(java版)
  2. 由相机的自身参数求解内参矩阵
  3. 中国风春节传统文化海报插画为载体的素材
  4. C++ Qt全局异常处理器_异常处理
  5. Qt之QSS:带CheckBox的QGroupBox及其样式设计
  6. 本博客排名从37533到984的各种数据记录
  7. APEX弹窗闪退报错(005,006,007 DXGI_ERROR_DEVICE_REMOVED)问题完全解决方案
  8. python for line in sys.stdin读文件,按行处理
  9. 基于大数据的主动科研管理模式与优化决策机制
  10. OEL安装RAC 配置DNS文档
  11. 图片外链网站需要什么样服务器,10个支持外链图片服务的免费图床网站
  12. BFS和DFS算法原理(通俗易懂版)
  13. MySQL学习路线指南
  14. [BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)
  15. 机器学习实战---PM2.5预测
  16. 审计署计算机培训心得体会,审计署计算机中级培训心得体会.docx
  17. html中collapse代码怎么写,CSS 面试题: 手写 collapse(折叠) 的 css/html 部分
  18. cfa的pv怎么用计算机算,CFA一级考试标配计算器使用功能详解
  19. Java面向对象程序设计笔记 • 【目录】
  20. 前端开发:Vue项目报错Unknown custom element:XXX - did you register the component correctly…的解决方法丨蓄力计划

热门文章

  1. 宏基服务器 安装系统,宏基Acer笔记本重装系统win7图文安装教程
  2. TRC格列卫(甲磺酸伊马替尼)病毒-宿主融合抑制剂方案
  3. 外牌年检车辆在上海办理年检
  4. Linux【网络库】| 【02 <netdb.h>】以及网络常用结构体
  5. Android DNS之gethostbyname()的实现
  6. 第2部分 字符串算法(提高篇)--第2章 KMP算法-1468:OKR-Periods of Words
  7. 好123主页篡改修复方法
  8. 初等数学I 自然数 第一节 基数理论
  9. Kubernetes之ServiceAccount+Secret(超详细汇总)
  10. 前端1——html笔记