JavaFX UI控件教程(十九)之Hyperlink

翻译自   Hyperlink

本章介绍Hyperlink用于将文本格式化为超链接的控件。

所述Hyperlink类表示另一种类型的Labeled控制。图18-1演示了默认超链接实现的三种状态。

图18-1超链接控制的三种状态

 

创建超链接

示例18-1中显示了生成超链接的代码片段。

例18-1典型的超链接

Hyperlink link = new Hyperlink();
link.setText("http://example.com");
link.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {System.out.println("This link is clicked");}
});

setText实例方法定义了超链接的文本标题。因为Hyperlink类是类的扩展,所以Labeled可以为超链接标题设置特定的字体和文本填充。该setOnAction方法设置特定操作,只要单击超链接就会调用该操作,类似于此方法对Button控件的工作方式。在例18-1中,此操作仅限于打印字符串。但是,在您的应用程序中,您可能希望实现更常见的任务。

链接本地内容

图18-2中的应用程序从本地目录呈现图像。

图18-2查看图像

查看例18-2中显示的此应用程序的源代码。

示例18-2使用超链接查看图像

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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 Main extends Application {final static String[] imageFiles = new String[]{"product.png","education.png","partners.png","support.png"};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(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {selectedImage.setImage(image);}});}final Button button = new Button("Refresh links");button.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(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();}
}

此应用程序Hyperlinkfor循环中创建四个对象。setOnAction调用每个超链接的方法定义用户单击特定超链接时的行为。在这种情况下,imagesselectedImage变量设置数组中的相应图像。

当用户单击超链接时,它将被访问。您可以使用类的setVisited方法Hyperlink刷新链接。例18-3中的代码片段完成了这项任务。

示例18-3刷新HyperlInks

final Button button = new Button("Refresh links");
button.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {for (int i = 0; i < captions.length; i++) {hpls[i].setVisited(false);selectedImage.setImage(null);}}
});

单击时,“刷新链接”按钮会将所有超链接带到未访问状态,如图18-3所示。

图18-3未访问的超链接

由于Hyperlink该类是类的扩展,因此Labeled您不仅可以指定文本标题,还可以指定图像。下一节中提供的应用程序使用文本标题和图像来创建超链接和加载远程HTML页面。

 

链接远程内容

您可以通过WebView在应用程序场景中嵌入浏览器来在JavaFX应用程序中呈现HTML内容。该WebView组件提供基本的网页浏览功能。它呈现网页并支持用户交互,例如导航链接和执行JavaScript命令。

研究例18-4中应用程序的源代码。它创建了四个带有文本标题和图像的超链接。单击超链接时,相应的值将作为URL传递给嵌入式浏览器。

示例18-4加载远程网页

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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 Main extends Application {final static String[] imageFiles = new String[]{"product.png","education.png","partners.png","support.png"};final static String[] captions = new String[]{"Products","Education","Partners","Support"};final static String[] urls = new String[]{"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("Hyperlink Sample");stage.setWidth(570);stage.setHeight(550);selectedImage.setLayoutX(100);selectedImage.setLayoutY(10);final WebView browser = new WebView();final WebEngine webEngine = browser.getEngine();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];hpl.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {webEngine.load(url);}});}HBox hbox = new HBox();hbox.getChildren().addAll(hpls);vbox.getChildren().addAll(hbox, browser);VBox.setVgrow(browser, Priority.ALWAYS);stage.setScene(scene);stage.show();}
}

超链接是在for类似于例18-2中的循环内创建的。为超链接设置的操作将相应的URL从urls数组传递到WebEngine嵌入式浏览器的对象。

编译并运行此应用程序时,它会生成如图18-4所示的窗口。

图18-4从Oracle公司站点加载页面

 

相关的API文档 

  • Hyperlink

  • Labeled

  • WebView

  • WebEngine

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杨辉三角形

package com.wdl.day07;/*** 创建人 wdl* 创建时间 2021/8/8* 描述*/ public class YangHuiTest {public static void main(String[] args) {int[][] yanghui new int[10][];for (int i 0; i < yanghui.length; i) {yanghui[i] new int[i 1];yanghui[i][0] 1;yanghui[i…

致我们最最最最最最最最最最最最最优秀的班主任——王老师

今天不说java&#xff0c;也不表C#&#xff0c;只来叙叙我们最最最最最最最最最最最最最优秀的班主任————王老师。亲爱的王老师&#xff0c;一起为3班孩子们的学业共同努力而使我倍感荣幸。回想从我们班报道以来&#xff0c;大大小小的各种奖状铺满那墨绿黑板的右侧&#x…

Asp.Net Core 发布到IIS

一、Asp.Net Core 发布到IIS 1.许多时候在WindowsServer服务器上已经安装了IIS&#xff0c;监听80端口&#xff0c;那么Asp.Net Core应用的自宿主就没法监听80端口 2.也就是在Widnows系统已经启用IIS服务的情况下&#xff0c;需要安装 NET Core Windows Server Hosting&#…

JavaFX UI控件教程(二十)之HTML Editor

翻译自 HTML Editor 在本章中&#xff0c;您将学习如何使用嵌入式HTML编辑器编辑JavaFX应用程序中的文本。 该HTMLEditor控件是一个功能齐全的富文本编辑器。它的实现基于HTML5的文档编辑功能&#xff0c;包括以下编辑功能&#xff1a; 文本格式包括粗体&#xff0c;斜体&am…

使用layui弹框实现添加时,当添加成功之后如何进行关闭当前窗口刷新父页面的数据

一看标题可能大家都比较模糊&#xff0c;我就去特意做了一个gif的演示图&#xff0c;结果发现太小了&#xff0c;就改成了现在的视频&#xff0c;视频地址&#xff1a; 使用layui实现对数据的增删改查演示案例实现技术是&#xff1a;ssh框架layui表格&#xff0c;即简单的对单表…

IdentityServer4 SigningCredential(RSA 证书加密)

IdentityServer4 默认提供了两种证书加密配置&#xff1a; services.AddIdentityServer().AddDeveloperSigningCredential().AddTemporarySigningCredential(); 这两种证书加密方式&#xff0c;都是临时使用&#xff0c;每次重启项目的时候&#xff0c;都会重新生成一个新的证…

JavaFX UI控件教程(二十一)之Tooltip

翻译自 Tooltip 在本章中&#xff0c;您将了解工具提示&#xff0c;即当鼠标光标悬停该控件时&#xff0c;可以为任何UI控件设置的控件。 的Tooltip类表示通常用于显示关于所述用户接口的控制附加信息的公共UI组件。可以通过调用setTooltip方法在任何控件上设置工具提示。 …

layui如何实现添加数据时关闭页面层,并实时刷新表格数据?

可能看到标题的你没有明白我到底想表达啥&#xff1f;&#xff08;我起名字时删改多遍&#xff0c;这是最终定下来的&#xff09;&#xff0c;不过&#xff0c;为了让大家看的明白&#xff0c;我专门去做了个演示视频&#xff1a;演示案例使用的技术&#xff1a;ssh框架layui表…

.net core 集成 autofac

1. Install Install-Package AutofacInstall-Package Autofac.Extensions.DependencyInjection 2.Startup 2.1 增加成員 public IContainer ApplicationContainer { get; private set; } 2.2 Startup.ConfigureServices 返回值改為&#xff1a;IServiceProvider 末尾中增…

JavaFX UI控件教程(二十三)之Menu

翻译自 Menu 本章介绍如何创建菜单和菜单栏&#xff0c;添加菜单项&#xff0c;将菜单分组&#xff0c;创建子菜单以及设置上下文菜单。 您可以使用以下JavaFX API类在JavaFX应用程序中构建菜单。 菜单栏 菜单项 菜单 CheckMenuItem RadioMenuItem 菜单 CustomMenuItem…

利用bootstraptable展示数据,对数据进行排序分页等操作

今天分享一下bootstraptable的相关技能点&#xff0c;由于第一次接触&#xff0c;所以刚开始碰了好多壁&#xff0c;于是趁现在过去不久&#xff0c;先总结总结。 Bootstraptable简单的来说就是一个表格控件&#xff0c;但是这个表格可不是一般的表格&#xff0c;分页、排序、…

JavaFX UI控件教程(二十四)之Password Field

翻译自 Password Field 在本章中&#xff0c;您将了解另一种类型的文本控件&#xff0c;即密码字段。 本PasswordField类实现一个专门的文本字段。通过显示回显字符串来隐藏用户键入的字符。图23-1显示了一个密码字段&#xff0c;其中包含提示消息。 图23-1带有提示消息的密…

3分钟内看完这,bootstraptable表格控件,受益匪浅!

今天分享一下bootstraptable的相关技能点&#xff0c;由于第一次接触&#xff0c;所以刚开始碰了好多壁&#xff0c;于是趁现在过去不久&#xff0c;先总结总结。Bootstraptable简单的来说就是一个表格控件&#xff0c;但是这个表格可不是一般的表格&#xff0c;分页、排序、查…

微软Azure开源开发者(深圳)峰会等你来

微软开发技术与云平台自从迈向开放、开源、跨平台的转型以来&#xff0c;已经受到全球开源社区们的关注。 从 Github 上高居世界首位的开源项目贡献数量&#xff0c;可以看到微软贯彻开源战略的实际行动。另一方面&#xff0c;微软也主动与开源社区做密切的技术交流。 本次 Azu…

这个点名系统太好用了,快来看看……

声明&#xff1a;软件为本人原创&#xff0c;后台回复&#xff1a;随机点名系统&#xff0c;免费下载。大家好&#xff0c;我是雄雄&#xff0c;昨天公众号给大家分享了windows系统和office办公软件激活的方法&#xff0c;正中好多粉丝的下怀。【原文在这里】今天在给大家分享一…

JavaFX UI控件教程(二十二)之Titled Pane和Accordion

翻译自 Titled Pane and Accordion 本章介绍如何在JavaFX应用程序中使用accordion和title窗格的组合。 标题窗格是带标题的面板。它可以打开和关闭&#xff0c;它可以封装任何Node诸如UI控件或图像以及添加到布局容器的元素组。 标题窗格可以使用手风琴控件进行分组&#x…

在ASP.NET Core 2.0中使用MemoryCache

说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下&#xff0c;但是在ASP.NET Core中System.Web已经不复存在。今儿个就简单的聊聊如何在ASP.NET Core中使用内存缓存。我们一般将经常访问但是又不是经常改变的数据放进缓存是再好不过了&#xff0c;…

在ASP.NET Core 2.0中使用CookieAuthentication

在ASP.NET Core中关于Security有两个容易混淆的概念一个是Authentication&#xff08;认证&#xff09;&#xff0c;一个是Authorization&#xff08;授权&#xff09;。而前者是确定用户是谁的过程&#xff0c;后者是围绕着他们允许做什么&#xff0c;今天的主题就是关于在ASP…

JavaFX UI控件教程(二十五)之Color Picker

翻译自 Color Picker 本章介绍ColorPicker控件&#xff0c;提供其设计概述&#xff0c;并说明如何在JavaFX应用程序中使用它。 JavaFX SDK中的颜色选择器控件是一个典型的用户界面组件&#xff0c;使用户可以从可用范围中选择特定颜色&#xff0c;或通过指定RGB或HSB组合来设…

英语不会读怎么办?它来教你……

大家好&#xff0c;我是雄雄&#xff0c;今天我又给大家分享好看又实用的软件啦~今天给大家分享的是一个比昨天的随机点名系统还要实用的软件&#xff0c;如果说昨天的随机点名系统只适合老师或者某些需要点名的朋友使用的话&#xff0c;那么今天分享的软件则是一个人人都可使用…