相关疑难解决方法(0)

如何在JavaFX的控制器文件中调用舞台上的函数

我使用javafx 和fxml,所以我使用控制器进行实际编码.我需要在舞台上做一些操作,例如获得x轴或y轴位置.我曾尝试stage.getX()stage.getY,但他们不工作(艺名为高lited为错误).如何在控制器中使用此类功能?我尝试在我的主文件中执行此操作:

 public int locationX = stage.getX();
Run Code Online (Sandbox Code Playgroud)


public double locationX = stage.getX();
Run Code Online (Sandbox Code Playgroud)

但它不起作用,反而使整个程序成为一个大错误.
那么如何在我的控制器文件中执行此类功能呢?我是否需要以其他方式导入某些内容或执行上述操作?

error: cannot find symbol
    locationX = stage.getX();
symbol:   variable stage
location: class FXMLController
Run Code Online (Sandbox Code Playgroud)


我知道"舞台"缺失了.但是如何在我的控制器中获得"舞台"?

location javafx javafx-2 fxml

10
推荐指数
2
解决办法
3万
查看次数

JavaFX - 如何获得FXML控制器?

我有以下代码:

Parent parent = FXMLLoader.load(Main.class.getResource("JanelaPrincipal.fxml"));
Run Code Online (Sandbox Code Playgroud)

在fxml文件中有一个对控制器类的引用.如何获取控制器对象?


FXML:

<AnchorPane id="AnchorPane" fx:id="root" 
    prefHeight="768.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" 
    xmlns="http://javafx.com/javafx/2.2" 
    fx:controller="br.meuspila.javafx.JanelaPrincipalController">
    ...
Run Code Online (Sandbox Code Playgroud)

java javafx fxml

10
推荐指数
1
解决办法
3万
查看次数

Controller.java文件中的Javafx 2.0操作方法Application.getParameters()

考虑以下样本.

如何访问控制器中应用程序的参数/参数?

谢谢.


注意:我曾尝试将App.java和MyController.java混合在一个Class文件中,但没有帮助.


App.java(简化):

public class App extends Application {

    public static void main(String[] args) {
        Application.launch(App.class, args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        // output arguments in console
        System.out.println(getParameters().getNamed().toString());

        Parent root = FXMLLoader.load(getClass().getResource("MyView.fxml"));
        final Scene scene = new javafx.scene.Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}
Run Code Online (Sandbox Code Playgroud)

MyController.java(简化):

public class MyController implements Initializable {

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // HOW TO getParameters() HERE ?
    }

    @FXML
    private Button myButton;

    @FXML
    private void my_Action(ActionEvent event) { …
Run Code Online (Sandbox Code Playgroud)

java javafx-2

8
推荐指数
1
解决办法
2万
查看次数

两个JavaFx控制器之间的通信

我制作了一个控制器和视图(fxml)的结构,以尽可能多地分离我的代码,我想知道如何在两个控制器之间进行通信.我的意思是,控制器必须调用另一个控制器的某些功能来将其设置为最新.

我认为我当前结构的模式将更加明确:

          控制器1
           / \
   fx:包括fx:include
       / \
Controller2 Controller3

每个控制器都有自己的fxml视图.
- 控制器1:一个容器控制器,其TabPane元素带有2个选项卡(每个选项卡对应1个控制器)
- 控制器2:列表
- 控制器3:表单

您可能已经猜到我想要我的表单(控制器3)自动更新我的列表(控制器2).目前,表单只是一个"创建表单",所以我只想在列表中添加行.

我已经尝试使用FXMLoader获取我的Controller 2并调用函数来重新启动我的tableView,但没有成功..

控制器1(.java + .fxml):

package pappu.controllers;

import pappu.core.controller.AbstractController;

public class FolderController extends AbstractController
{

}
Run Code Online (Sandbox Code Playgroud)


<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<VBox fx:id="view" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="pappu.controllers.FolderController">
  <TabPane>
    <tabs>
      <Tab text="RECHERCHE">
        <content>
          <AnchorPane id="Content">
            <children>
                <fx:include source="FolderList.fxml" />  
            </children>
          </AnchorPane>
        </content>
      </Tab>
      <Tab text="DOSSIER">
        <content>
          <AnchorPane id="Content">
            <children>
                <fx:include source="FolderFormAdd.fxml" />  
            </children>
          </AnchorPane>
        </content>
      </Tab>
    </tabs>
  </TabPane>
</VBox>
Run Code Online (Sandbox Code Playgroud)

控制器2(.java + .fxml):

package …
Run Code Online (Sandbox Code Playgroud)

java controller javafx fxml

7
推荐指数
2
解决办法
2万
查看次数

JavaFX 2.2 onLoad方法等效

我正在搜索一个EventListener或方法,它将在我加载FXML文件时运行.

JavaFX有类似于Javascript onLoad的东西吗?

我只想运行一个方法来清除TextFields中的任何数据.

javafx-2

6
推荐指数
1
解决办法
1万
查看次数

JavaFX - 许多静态FXML控制器

JavaFX存在一个应用程序,应用程序从以下Main.class文件开始extends Application:

  public class Main extends Application {

    /**
     * Keep a reference to the main Stage
     */
    public static Stage                 stage;
    /**
     * MainScene Controller
     */
    public static MainScene             mainSceneController;
    /**
     * The Capture Window of the application
     */
    public static CaptureWindow         captureWindowController;
    /**
     * Settings Scene Controller
     */
    public static SettingsController    settingsController;

    @Override
    public void start(Stage primary) throws Exception {

        stage = primary;
        ..........

        // CaptureWindow
        FXMLLoader loader1 = new FXMLLoader(getClass().getResource("/fxml/CaptureWindow.fxml"));
        loader1.load();
        captureWindowController …
Run Code Online (Sandbox Code Playgroud)

java javafx

6
推荐指数
1
解决办法
1120
查看次数

有多个FXML文件(在SceneBuilder中创建),但只有一个控制器.每个场景是否加载了自己的控制器副本?

我有多个在SceneBuilder中创建的FXML文件和一个控制器文件.当我在一个场景中编辑一个值(例如,一个整数值),然后切换场景时,在新场景中似乎没有更改该值.

当为场景加载fxml文件时,我的程序是否仅为fxml文件加载了控制器文件的副本(并且仅由其使用)?

非常感谢你们能回答这个问题的任何帮助.

controller javafx fxml

5
推荐指数
1
解决办法
1万
查看次数

使用 JavaFX 打开多个窗口

我正在尝试使用 JavaFX 打开多个窗口,我有一个事件侦听器,可以在单击按钮时打开一个新窗口,如下所示:

@FXML
private void joinAction() {
    Parent root;
    try {
        Stage stage = (Stage) joinButton.getScene().getWindow();
        stage.close();

        root = FXMLLoader.load(getClass().getResource("main.fxml"));
        stage = new Stage();
        stage.setTitle("TuneUs");
        stage.setScene(new Scene(root));
        stage.show();

    } catch (IOException e) {e.printStackTrace();}
}
Run Code Online (Sandbox Code Playgroud)

第一个窗口打开,新窗口打开,但我的问题是让事件与我的第二个窗口一起工作

main.fxml我有这一行:

<TextField id="chat_bar" onAction="#sendChat" layoutX="14.0" layoutY="106.0" prefHeight="22.0" prefWidth="403.0"/>
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器类中我有这个方法:

@FXML
private void sendChat() {
    System.out.println("test");
}
Run Code Online (Sandbox Code Playgroud)

但 Intellij 告诉我;没有为顶级元素指定控制器

所以,我的问题是:我是否需要创建多个控制器类,或者我可以为多个窗口只使用一个类吗?

java events javafx intellij-idea

5
推荐指数
1
解决办法
2万
查看次数

JavaFX在没有控制器的fxml中包含fxml

我正在使用javafx编写应用程序.这是一个"多屏"应用程序,带有一个主菜单,可以从中切换场景.

我的场景在不同的fxml文件中定义.

因为我尝试使用mvc模式我没有在fxml文件中设置控制器,我在FXMLloader上使用setController.

一切都运行正常,但我在单独的控制器和单独的fxml文件中有onmen的mainmenu及其所有功能.

我试过了

<fx:include source="Menubar.fxml"/>
Run Code Online (Sandbox Code Playgroud)

并为fxml文件创建了一个控制器,当我在fxml文件中设置控制器时,我无法编译源代码.如何为包含的fxml文件设置控制器?

startpage.fxml获取其控制器"Startpage"

FXMLLoader loader = new FXMLLoader(getClass().getResource("../fxml/startpage.fxml"));
        loader.setController(new Startpage(m));
        Pane mainPane = loader.load();
Run Code Online (Sandbox Code Playgroud)

startpage.fxml包括menubar.fxml,如何为菜单栏控件设置控制器?或者如何在每个其他控制器中轻松包含menubarController?

model-view-controller controller javafx fxml

5
推荐指数
1
解决办法
2万
查看次数

使用 Spring Boot 启动 JavaFX 2

我正在尝试使用 JavaFX 2 和 Spring Boot 创建新应用程序,但到目前为止,我的简单应用程序(如 hello world)尚未运行,因为MainPaneController.

MainPaneController 类:

public class MainPaneController implements Initializable {

    public static final String VIEW = "/fxml/Scene.fxml";

    @FXML
    private Node root;

    @FXML
    private Label label;

    @PostConstruct
    public void init() {
    }

    public Node getRoot() {
        return root;
    }

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }

}
Run Code Online (Sandbox Code Playgroud)

主类FxBootApplication:

@SpringBootApplication
public class FxBootApplication extends Application {

    private …
Run Code Online (Sandbox Code Playgroud)

java spring javafx-2 spring-boot

5
推荐指数
1
解决办法
1万
查看次数