我正在尝试编写使用SceneBuilder创建的按钮的功能。我在Scene builder中找到了“Code”部分,并设置了当我单击按钮时将启动的方法的名称(例如fileSelector)。在该方法中,我应该使用FileChooser变量(我需要从PC上获取一个图像并将其保存到一个“file”变量中)。
我复制了示例控制器骨架并将其粘贴到我的controller类中。现在我不知道如何实现该方法,因为我需要一个Stage变量与FileChooser变量一起使用,但是Stage变量是为公共void start(Stage primaryStage)
方法给定的。
package application;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
public class MainExample extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
Pane firstPane = FXMLLoader.load(MainExample.class.getClassLoader().getResource("buttonExample.fxml"));
Scene firstScene = new Scene(firstPane);
primaryStage.setScene(firstScene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
package application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class MyController {
@FXML
private Button selectFile;
@FXML
void fileSelector(ActionEvent event) {
FileChooser fileChooser = new FileChooser();
File file = fileChooser.showOpenDialog(stage);
}
}
xml prettyprint-override"><?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.Pane?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="135.0" prefWidth="280.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyController">
<children>
<Button fx:id="selectFile" layoutX="102.0" layoutY="55.0" mnemonicParsing="false" onAction="#fileSelector" text="SelectFile" />
</children>
</Pane>
您需要一个窗口
实例来显示FileChooser
对话框,您可以从事件中获得它,如下所示:
java prettyprint-override">@FXML
void fileSelector(ActionEvent event) {
Window window = ((Node) (event.getSource())).getScene().getWindow();
FileChooser fileChooser = new FileChooser();
File file = fileChooser.showOpenDialog(window);
event.consume();
}
问题内容: 我的程序应该从文件上传图像,然后将其显示为背景。我的问题是,当我在参数中创建对象时,它会询问您要放入的文件。我试图将我的File对象放入其参数内,但无法正常工作。请帮我。我被卡住了 问题答案: 问题在于,的构造函数期望a ,而您将其传递给a 。任何优秀的IDE都会告诉您给定方法的参数期望值。找到该键盘快捷方式并使用它(IntelliJ中的Ctrl + P)。从那里开始,您所要做的就是找
问题内容: 我对大概要文件节具有通用逻辑,因此我尝试使用对概要文件节的通用逻辑进行创建,并且与该节相关的所有类都应按照我的理解正确扩展此Profile类,但是当我尝试创建时会收到错误消息: CodeIgniter尝试找到我正在其中运行的此类。 我的错误在哪里?或者,也许还有另一种更好的方法来标记出通用逻辑? 问题答案: 我认为您已经将MY_Controller放在/ application / c
我有控制器方法,为此我正在创建Junit,但在调用服务方法时出现Null指针错误。我使用了电源模拟,但仍然得到Null指针。 方法: 测试方法: @InjectMocks私有DataSourceReportController dataSourceReportController; 在“dataSourceReportService.listDataSourceReportByCurrentRun
StackPane容器=fxmlLoader.load(getClass().getResource(“fxmlDocument.fxml”)等。 我如何在控制器传递中获得我的根节点或stackpane?
问题内容: 我的问题是所有使用示例都需要您通过一个阶段。唯一的问题是,我的UI是在文件中定义的,该文件使用与主阶段分离的控制器类。 我该怎么做才能使其正常工作?就像我说的那样,我在控制器类中没有任何阶段的引用,那我该怎么办? 问题答案: 对于场景中的任何节点(例如,根节点;但是注入的任何节点都可以),请执行
现在,我们已经有了游戏中的所有图像和类,接下来的工作是构建游戏引擎。Canvas Hero游戏使用标准的MVC架构进行构建,MVC架构使数据、表示和控制分离。本节,我们将创建Controller类,它负责实例化模型和视图,初始化游戏,控制游戏状态,并管理键盘事件。 操作步骤 按照以下步骤,创建Canvas Hero游戏的控制器: 1. 定义Controller类的构造函数: /* 游戏控制器