FXML文件中的getHostServices()。showDocument()

【字号: 日期:2024-02-24浏览:44作者:雯心
如何解决FXML文件中的getHostServices()。showDocument()?

您需要将传递HostServices给Controller。

密码:在HostServices中设置Controller。

HostServices hostServices ;public void setGetHostController(HostServices hostServices){ this.hostServices = hostServices;}

密码:传递HostServices给Controller。

FXMLLoader loader = new FXMLLoader(getClass().getResource('FXMLDocument.fxml'));Parent root = loader.load();FXMLDocumentController fXMLDocumentController = loader.getController();fXMLDocumentController.setGetHostController(getHostServices());

主要

import javafx.application.Application;import javafx.fxml.FXMLLoader;import javafx.scene.Parent;import javafx.scene.Scene;import javafx.stage.Stage;/** * * @author sedrick */public class JavaFXApplication7 extends Application { @Override public void start(Stage stage) throws Exception {FXMLLoader loader = new FXMLLoader(getClass().getResource('FXMLDocument.fxml'));Parent root = loader.load();FXMLDocumentController fXMLDocumentController = loader.getController();fXMLDocumentController.setGetHostController(getHostServices());Scene scene = new Scene(root);stage.setScene(scene);stage.show(); } /** * @param args the command line arguments */ public static void main(String[] args) {launch(args); }}

控制者

import java.net.URL;import java.util.ResourceBundle;import javafx.application.HostServices;import javafx.event.ActionEvent;import javafx.fxml.FXML;import javafx.fxml.Initializable;import javafx.scene.control.Label;/** * * @author sedri */public class FXMLDocumentController implements Initializable { HostServices hostServices; @FXML private Label label; @FXML private void handleButtonAction(ActionEvent event) {hostServices.showDocument('www.google.com'); } @Override public void initialize(URL url, ResourceBundle rb) {// Todo } public void setGetHostController(HostServices hostServices) {this.hostServices = hostServices; }}

XML文件

<?xml version='1.0' encoding='UTF-8'?><?import java.lang.*?><?import java.util.*?><?import javafx.scene.*?><?import javafx.scene.control.*?><?import javafx.scene.layout.*?><AnchorPane prefheight='200' prefWidth='320' xmlns:fx='http://javafx.com/fxml/1' fx:controller='javafxapplication7.FXMLDocumentController'> <children><Button layoutX='126' layoutY='90' text='Click Me!' onAction='#handleButtonAction' fx: /><Label layoutX='126' layoutY='120' minHeight='16' minWidth='69' fx: /> </children></AnchorPane>解决方法

有什么简单的方法可以将getHostServices()。showDocument()命令以某种方式放入toHomepage()方法中,而不是执行几行代码,因此代码看起来应该很简洁?

package sample;import javafx.application.HostServices;import javafx.event.ActionEvent;import javafx.fxml.FXML;import javafx.scene.control.Button;public class Controller { @FXML private Button facebookButton; @FXML void toHomepage(ActionEvent event) { }}

如果我按下按钮,它应该直接将我链接到Facebook URL

相关文章: