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

是否有任何简单的方法将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

您需要将HostServices传递给Controller

密钥代码:在Controller设置HostServices

 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; } } 

FXML