如何将参数传递给javafx中的辅助窗口?有没有办法与相应的控制器通信?
例如:用户从a中选择一个客户,TableView并打开一个新窗口,显示客户的信息.
Stage newStage = new Stage();
try
{
AnchorPane page = (AnchorPane) FXMLLoader.load(HectorGestion.class.getResource(fxmlResource));
Scene scene = new Scene(page);
newStage.setScene(scene);
newStage.setTitle(windowTitle);
newStage.setResizable(isResizable);
if(showRightAway)
{
newStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
newStage将是新窗口.问题是,我找不到告诉控制器在哪里查找客户信息的方法(通过传递id作为参数).
有任何想法吗?
parameters dependency-injection javafx parameter-passing fxml
我试图找到难以捉摸的JavaFX场景构建器,以便我可以在Intellij中使用它.我在Windows操作系统上.
Oracle已经声明JavaFX场景构建器包含在新的下载中,但无论我如何搜索都找不到它(请参阅http://www.oracle.com/technetwork/java/javafx/downloads/index.html).我认为他们已经链接到不正确的页面,谷歌搜索它让我无处可去.
我已经安装了Java 8 SDK并且运行正常.显然JavaFX现在包含在其中,但是在Java文件夹中没有任何地方可以找到场景构建器,它似乎在网上完全丢失.
请任何人可以帮忙吗?我只是想编写一个小的GUI程序,看起来JavaFX似乎是要走的路(如果它不是那么随意消除我对这个概念的看法!)
在JavaFX中,如果我有一个包含2个VBox元素的场景,并且每个元素VBox都有多个元素Label.
如果我将顶部设置VBox为隐形,为什么底部VBox 不会移动到顶部的场景VBox?
这VBox是看不见的,但我希望其他对象移动到它的位置.
我正在使用FXML来加载我的控件.
我有这个常见问题,因为它似乎是.重置后,我的表视图不会刷新我的项目.我检查了数据,这是新的数据.
我从互联网尝试了多种解决方案但没有成功.
无法重置所有列,因为它添加了一个空的额外(不知道原因)和调整大小只是破坏.
我的表格不可编辑.新数据已更改.
如果我更改项目的顺序并且行更改(:|),则刷新数据.
我只是没有想法.
目前刷新代码非常简单.
ObservableList<User> data = FXCollections.observableArrayList(User.getResellers());
reseller_table.setItems(data);
Run Code Online (Sandbox Code Playgroud)
新数据再次正确.当我选择tableView时,它返回新的正确Item.
我想随时与FXML控制器类进行通信,以便从主应用程序或其他阶段更新屏幕上的信息.
这可能吗?我还没有找到任何办法.
静态函数可能是一种方式,但它们无法访问表单的控件.
有任何想法吗?
javafx.scene.text.Text和javafx.scene.control.Label有什么区别?
文件说:
但Label类有一个方法"setText"和"textProperty",因此是可编辑的.
我需要通过控制器中的代码关闭当前的fxml窗口
我知道stage.close()或stage.hide()在fx中执行此操作
如何在fxml中实现这个?我试过了
private void on_btnClose_clicked(ActionEvent actionEvent) {
Parent root = FXMLLoader.load(getClass().getResource("currentWindow.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用!
所有帮助将不胜感激.谢谢!
我想删除或更改空javafx表显示的默认文本,No content in table使其更有意义.
例如,在一个显示学生的表格中,当没有学生要展示时,我希望它在课程表中说"数据库中没有学生"或"学生没有课程".我不知道在javafx中是否可以通过Java代码,使用场景构建器或在IDE中编辑.fxml文件.到目前为止,我已经在场景构建器中查看了tableview的属性,但是我看不到此文本的相关属性
我有一个只有一个FXML文件的JavaFX应用程序.在这个文件中,我有一个AnchorPane,里面有一个StackPane.这是截图:

当我启动此应用程序时,我想使用AnchorPane自动调整StackPane的大小.从而; StackPane将自动获得当前可用的宽度和高度.在我调整应用程序大小的那一刻,AnchorPane正在自动调整大小,但StackPane保持固定大小.
如何自动调整StackPane的大小并使其在父面板中完全拉伸?
我的守则
Main.java
package app;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
Scene scene = new Scene(root,800,600);
scene.getStylesheets().add(this.getClass().getResource("/app/style1.css").toExternalForm());
stage.setScene(scene);
stage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
MainController.java
package app;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
public class MainController implements Initializable {
@FXML
private AnchorPane anchorPane;
@FXML …Run Code Online (Sandbox Code Playgroud) 我有2个fxml文件:
我想知道如何从"主"场景中加载内容空间内的第二个文件.在javaFX中工作是一件好事还是加载新场景更好?
我正在尝试做这样的事情,但它不起作用:
@FXML
private AnchorPane content;
@FXML
private void handleButtonAction(ActionEvent event) {
content = (AnchorPane) FXMLLoader.load("vista2.fxml");
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.