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