- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Passing Parameters JavaFX FXML
(10 个回答)
3年前关闭。
我有一个包含 10 部电影的 Pane ,每次用户单击电影缩略图时,我都有一个方法可以将用户带到票务页面,在那里他们可以选择他们想购买的票数。但是,我试图弄清楚如何传递 Film 对象 loadTicketPage
在调用门票页面的 Controller 类中,当我从电影页面 Controller 调用电影对象时。
public class controller {
public void initialize() {
film1.setImage(getFilmFromList(0).getThumbnail());
film2.setImage(getFilmFromList(1).getThumbnail());
film3.setImage(getFilmFromList(2).getThumbnail());
film4.setImage(getFilmFromList(3).getThumbnail());
film5.setImage(getFilmFromList(4).getThumbnail());
film6.setImage(getFilmFromList(5).getThumbnail());
film7.setImage(getFilmFromList(6).getThumbnail());
film8.setImage(getFilmFromList(7).getThumbnail());
film9.setImage(getFilmFromList(8).getThumbnail());
film10.setImage(getFilmFromList(9).getThumbnail());
}
public void loadTicketPage(Film film) {
try {
Parent root = FXMLLoader.load(getClass().getResource("ticketsPage.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.setScene(scene);
stage.setTitle("Ticket Page");
stage.show();
} catch (IOException e) {
System.out.println(e);
}
}
public void film1() {
Double price = getFilmFromList(0).getPrice();
String title = getFilmFromList(0).getFilmName();
loadTicketPage(getFilmFromList(0));
}
public void film2() {
Double price = getFilmFromList(1).getPrice();
String title = getFilmFromList(1).getFilmName();
loadTicketPage(getFilmFromList(1));
}
}
public class TicketsPageController {
public Label filmName;
public Label filmDescription;
public void initialize() {
filmName.setText(film.getFilmTitle)
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.String?>
<?import javafx.collections.FXCollections?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.effect.SepiaTone?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefHeight="670.0" prefWidth="1000.0" style="-fx-background-color: maroon;" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.TicketsPageController">
<children>
<Label fx:id="lblHello" layoutX="308.0" layoutY="9.0" prefHeight="94.0" prefWidth="460.0" text="Hello! Welcome to Cinema Enterpriso" textAlignment="CENTER" textFill="WHITE" wrapText="true">
<font>
<Font name="Broadway" size="30.0" />
</font>
</Label>
<ImageView fitHeight="141.0" fitWidth="297.0" layoutX="10.0" layoutY="10.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@images/University_of_Huddersfield_logo.jpg" />
</image>
</ImageView>
<Button fx:id="btnOpenLogin" layoutX="770.0" layoutY="46.0" mnemonicParsing="false" onAction="#btnOpenLoginClick" style="-fx-background-color: tan;" text="Login">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnSignUp" layoutX="840.0" layoutY="46.0" mnemonicParsing="false" onAction="#btnCreateNewUser" style="-fx-background-color: tan;" text="Sign Up">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnBasket" layoutX="925.0" layoutY="46.0" mnemonicParsing="false" onAction="#btnOpenOrderSummary" style="-fx-background-color: tan;" text="Basket">
<effect>
<SepiaTone />
</effect>
</Button>
<Label layoutX="35.0" layoutY="328.0" text="Please select your tickets:" textFill="WHITE">
<font>
<Font name="Broadway" size="24.0" />
</font>
</Label>
<ComboBox fx:id="ticketType1" layoutX="51.0" layoutY="383.0" prefWidth="150.0" promptText="Ticket type" style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Adult"> </String>
<String fx:value="Child"> </String>
<String fx:value="Teen"> </String>
<String fx:value="Student"> </String>
<String fx:value="Senior"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="ticketType2" layoutX="51.0" layoutY="437.0" prefWidth="150.0" promptText="Ticket type" style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Adult"> </String>
<String fx:value="Child"> </String>
<String fx:value="Teen"> </String>
<String fx:value="Student"> </String>
<String fx:value="Senior"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="ticketType3" layoutX="51.0" layoutY="489.0" prefWidth="150.0" promptText="Ticket type" style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Adult"> </String>
<String fx:value="Child"> </String>
<String fx:value="Teen"> </String>
<String fx:value="Student"> </String>
<String fx:value="Senior"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="ticketType4" layoutX="51.0" layoutY="541.0" prefWidth="150.0" promptText="Ticket type" style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Adult"> </String>
<String fx:value="Child"> </String>
<String fx:value="Teen"> </String>
<String fx:value="Student"> </String>
<String fx:value="Senior"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="ticketType5" layoutX="51.0" layoutY="592.0" prefWidth="150.0" promptText="Ticket type" style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Adult"> </String>
<String fx:value="Child"> </String>
<String fx:value="Teen"> </String>
<String fx:value="Student"> </String>
<String fx:value="Senior"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="no1" layoutX="218.0" layoutY="383.0" prefHeight="31.0" prefWidth="79.0" promptText="no." style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1"> </String>
<String fx:value="2"> </String>
<String fx:value="3"> </String>
<String fx:value="4"> </String>
<String fx:value="5"> </String>
<String fx:value="6"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="no2" layoutX="217.0" layoutY="435.0" prefHeight="31.0" prefWidth="79.0" promptText="no." style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1"> </String>
<String fx:value="2"> </String>
<String fx:value="3"> </String>
<String fx:value="4"> </String>
<String fx:value="5"> </String>
<String fx:value="6"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="no3" layoutX="217.0" layoutY="488.0" prefHeight="31.0" prefWidth="79.0" promptText="no." style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1"> </String>
<String fx:value="2"> </String>
<String fx:value="3"> </String>
<String fx:value="4"> </String>
<String fx:value="5"> </String>
<String fx:value="6"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="no4" layoutX="218.0" layoutY="542.0" prefHeight="31.0" prefWidth="79.0" promptText="no." style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1"> </String>
<String fx:value="2"> </String>
<String fx:value="3"> </String>
<String fx:value="4"> </String>
<String fx:value="5"> </String>
<String fx:value="6"> </String>
</FXCollections>
</items>
</ComboBox>
<ComboBox fx:id="no5" layoutX="217.0" layoutY="594.0" prefHeight="31.0" prefWidth="79.0" promptText="no." style="-fx-background-color: tan;">
<effect>
<SepiaTone />
</effect>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1"> </String>
<String fx:value="2"> </String>
<String fx:value="3"> </String>
<String fx:value="4"> </String>
<String fx:value="5"> </String>
<String fx:value="6"> </String>
</FXCollections>
</items>
</ComboBox>
<Label fx:id="filmName" layoutX="521.0" layoutY="123.0" text="Film" textFill="WHITE">
<font>
<Font name="Broadway" size="30.0" />
</font>
</Label>
<Label fx:id="filmDescription" layoutX="485.0" layoutY="189.0" text="Description" textFill="WHITE">
<font>
<Font name="Broadway" size="24.0" />
</font>
</Label>
<Button fx:id="btnAddToOrder1" layoutX="325.0" layoutY="383.0" mnemonicParsing="false" onAction="#btnAddTicketToOrder1" style="-fx-background-color: tan;" text="Add to order" textFill="MAROON">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnAddToOrder2" layoutX="325.0" layoutY="435.0" mnemonicParsing="false" onAction="#btnAddTicketToOrder2" style="-fx-background-color: tan;" text="Add to order" textFill="MAROON">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnAddToOrder3" layoutX="325.0" layoutY="489.0" mnemonicParsing="false" onAction="#btnAddTicketToOrder3" style="-fx-background-color: tan;" text="Add to order" textFill="MAROON">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnAddToOrder4" layoutX="325.0" layoutY="541.0" mnemonicParsing="false" onAction="#btnAddTicketToOrder4" style="-fx-background-color: tan;" text="Add to order" textFill="MAROON">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnAddToOrder5" layoutX="325.0" layoutY="595.0" mnemonicParsing="false" onAction="#btnAddTicketToOrder5" style="-fx-background-color: tan;" text="Add to order" textFill="MAROON">
<effect>
<SepiaTone />
</effect>
</Button>
<Button fx:id="btnBackHomepage" layoutX="485.0" layoutY="594.0" mnemonicParsing="false" onAction="#btnBackToHomePageClick" prefHeight="31.0" prefWidth="155.0" style="-fx-background-color: tan;" text="Back to Homepage" textFill="MAROON">
<effect>
<SepiaTone />
</effect>
</Button>
</children>
</AnchorPane>
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
... 45 more
Caused by: java.lang.NullPointerException
at sample.TicketsPageController.setStuff(TicketsPageController.java:54)
at sample.TicketsPageController.initialize(TicketsPageController.java:41)
... 55 more
package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.stage.Window;
import java.io.IOException;
public class TicketsPageController {
public Label lblHello;
public Button btnOpenLogin;
public Button btnSignUp;
public Button btnBasket;
public Label filmName;
public Label filmDescription;
public ComboBox ticketType1;
public ComboBox ticketType2;
public ComboBox ticketType3;
public ComboBox ticketType4;
public ComboBox ticketType5;
public ComboBox no1;
public ComboBox no2;
public ComboBox no3;
public ComboBox no4;
public ComboBox no5;
public Button btnAddToOrder1;
public Button btnAddToOrder2;
public Button btnAddToOrder3;
public Button btnAddToOrder4;
public Button btnAddToOrder5;
public Button btnBackHomepage;
private String filmTitle;
private Film film;
public void initialize() {
setStuff();
// System.out.println(filmTitle);
filmName.setText(filmTitle);
}
// public void setFilm(Film film) {
// System.out.println("in set film");
// this.film = film;
//
// }
public void setFilm(Film film) {
this.film = film;
filmName.setText(film.getFilmName());
}
public void setStuff() {
System.out.println("test");
filmTitle = film.getFilmName();
}
public String printFilm(){
return film.getFilmName();
}
public void btnOpenLoginClick(ActionEvent actionEvent) {
printFilm();
}
public void btnCreateNewUser(ActionEvent actionEvent) {
}
public void btnOpenOrderSummary(ActionEvent actionEvent) {
}
public void btnAddTicketToOrder1(ActionEvent actionEvent) {
}
public void btnAddTicketToOrder2(ActionEvent actionEvent) {
}
public void btnAddTicketToOrder3(ActionEvent actionEvent) {
}
public void btnAddTicketToOrder4(ActionEvent actionEvent) {
}
public void btnAddTicketToOrder5(ActionEvent actionEvent) {
}
public void btnBackToHomePageClick(ActionEvent actionEvent) throws IOException {
Window mainWindow = btnBackHomepage.getScene().getWindow();
Parent newRoot = FXMLLoader.load(getClass().getResource("homepage.fxml"));
mainWindow.getScene().setRoot(newRoot);
}
}
最佳答案
在新的Pane
的加载过程中您可以从 FXMLLoader
获取 Controller 并将电影传递给它:
public void loadTicketPage(Film film){
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("ticketsPage.fxml"));
Scene scene = new Scene(loader.load());
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.setScene(scene);
stage.setTitle("Ticket Page");
// get the controller and set the film
TicketsPageController controller = loader.getController();
controller.setFilm(film);
stage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public class TicketsPageController {
private Film film;
public Label filmName;
public Label filmDescription;
public void setFilm(Film film) {
this.film = film;
filmName.setText(film.getFilmTitle());
}
}
关于java - 如何将值传递给在方法的 Controller 类中调用新页面的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212037/
我想知道有没有可能做 new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true))) 在 Java 中,s
我正在尝试使用 ConcurrentHashMap 初始化 ConcurrentHashMap private final ConcurrentHashMap > myMulitiConcurrent
我只是想知道两个不同的新对象初始化器之间是否有任何区别,还是仅仅是语法糖。 因此: Dim _StreamReader as New Streamreader(mystream) 与以下内容不同: D
在 C++ 中,以下两种动态对象创建之间的确切区别是什么: A* pA = new A; A* pA = new A(); 我做了一些测试,但似乎在这两种情况下,都调用了默认构造函数,并且只调用了它。
我已经阅读了其他帖子,但它们没有解决我的问题。环境为VB 2008(2.0 Framework)下面的代码在 xslt.Load 行导致 XSLT 编译错误下面是错误的输出。我将 XSLT 作为字符串
我想知道为什么alert(new Boolean(false))打印 false 而不是打印对象,因为 new Boolean 应该返回对象。如果我使用 console.log(new Boolean
本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下: 写装饰器 装饰器只不过是一种函数,接收被装饰的可调用对象作为它的唯一参数,然后返回一个可调用对象(就像前面的简单例子) 注
我可以编写 YAML header 来使用 knit 为 R Markdown 文件生成多种输出格式吗?我无法重现 the original question with this title 的答案中
我可以编写一个YAML标头以使用knitr为R Markdown文件生成多种输出格式吗?我无法重现the original question with this title答案中描述的功能。 这个降价
我正在使用vars package可视化脉冲响应。示例: library(vars) Canada % names ir % `$`(irf) %>% `[[`(variables[e])) %>%
我有一个容器类,它有一个通用参数,该参数被限制到某个基类。提供给泛型的类型是基类约束的子类。子类使用方法隐藏(新)来更改基类方法的行为(不,我不能将其设为虚拟,因为它不是我的代码)。我的问题是"new
Java 在提示! cannot find symbol symbol : constructor Bar() location: class Bar JPanel panel =
在我的应用程序中,一个新的 Activity 从触摸按钮(而不是点击)开始,而且我没有抬起手指并希望在新的 Activity 中跟踪触摸的 Action 。第二个 Activity 中的触摸监听器不响
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,
和我的last question ,我的程序无法检测到一个短语并将其与第一行以外的任何行匹配。但是,我已经解决并回答了。但现在我需要一个新的 def函数,它删除某个(给定 refName )联系人及其
这个问题在这里已经有了答案: Horizontal list items (7 个答案) 关闭 9 年前。
我想创建一个新的 float 类型,大小为 128 位,指数为 4 字节(32 位),小数为 12 字节(96 位),我该怎么做输入 C++,我将能够在其中进行输入、输出、+、-、*、/操作。 [我正
我在放置引用计数指针的实例时遇到问题 类到我的数组类中。使用调试器,似乎永远不会调用构造函数(这会扰乱引用计数并导致行中出现段错误)! 我的 push_back 函数是: void push_back
我在我们的代码库中发现了经典的新建/删除不匹配错误,如下所示: char *foo = new char[10]; // do something delete foo; // instead of
A *a = new A(); 这是创建一个指针还是一个对象? 我是一个 c++ 初学者,所以我想了解这个区别。 最佳答案 两者:您创建了一个新的 A 实例(一个对象),并创建了一个指向它的名为 a
我是一名优秀的程序员,十分优秀!