更改/更新另一个类中的FXML组件

约翰尼·伊卡洛斯(Johnny Ikarus)

我的问题是:我想从.fxml中更改某些内容,但是无论我做什么,都没有任何改变。这只是一个简单的例子。

我浏览了整个互联网,但没有一种解决方案对我有用。在这里,我想通过从主类调用相应的方法来更改标签的文本。

setLabel()单击Button时,在控制器类中使用事件处理程序调用相同的方法(在此处),一切正常,但是当我尝试从另一个类中修改某些内容时,一切正常。

主班:

package sample;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;  
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

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

Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
Controller controller = new Controller();
Platform.runLater(()->controller.setLabel());

}

FXML代码:

<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <center>
      <Label fx:id="label" text="This" BorderPane.alignment="CENTER" />
   </center>
</BorderPane>

控制器类:包装样品;

import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class Controller {
@FXML
private Label label=new Label();

public void setLabel(){
    label.setText("Test");
}
}
乌玛·塔希尔|

这很简单...您可以通过以下方式更改Main类中的标签文本:在Controller类中为所需标签添加getter方法,然后使用控制器对象(loader.getController() )并更新其文本。或使用Main中的controller对象在Controller类内调用setter方法。正如DVagra所说,使用loader.getController()获取控制器对象。(其中loader是FXMLoader的对象)。

而且,您不需要Platform.runLater()来更新gui控件。由于您已经在FX线程上运行。

无论如何,这就是您所需要的。

主班

package sample;
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 {
@Override
public void start(Stage primaryStage) throws Exception{
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(Main.class.getResource("sample.fxml"));
    Parent root = loader.load();
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();

    Controller controller = loader.getController();

    controller.setLabel("Test");
//  Or
//  controller.getLabel().setText("Test");
 }
public static void main(String[] args) {
    launch(args);
 }
}

控制器类

package sample;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable{
@FXML
Label label;

//setter
public void setLabel(String labelText){
    label.setText(labelText);
}

//getter for label
public Label getLabel() {
    return label;
}

@Override
public void initialize(URL location, ResourceBundle resources) {
 }
}

Sample.fxml

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane xmlns="http://javafx.com/javafx/8.0.60" 
xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<center>
    <Label fx:id="label" text="This" BorderPane.alignment="CENTER" />
</center>
</BorderPane>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改/更新另一个类中的FXML组件

来自分类Dev

在另一个类中添加组件时,JPanel不会更新

来自分类Dev

在另一个类中添加组件时,JPanel不会更新

来自分类Dev

更改另一个组件中的状态

来自分类Dev

从另一个文件中的另一个组件更改一个组件的状态

来自分类Dev

从另一个文件中的另一个组件更改一个组件的状态

来自分类Dev

更改另一个组件/反应图标中的一个组件

来自分类Dev

android:从另一个类中的另一个线程更新UI

来自分类Dev

更新另一个类中的变量

来自分类Dev

如何从另一个类更新一个类中的变量

来自分类Dev

从另一个组件更新组件的状态

来自分类Dev

从另一个类(B类)更改类(A类)中的文本

来自分类Dev

如果按下另一个组件中的链接,如何更新组件中的列表?

来自分类Dev

如何在一个类中的另一个函数中更新变量?

来自分类Dev

C#无法从另一个类更改窗体的组件

来自分类Dev

angular 2 –通过组件更改全局服务中的接口,并在另一个组件中更新已更改的接口

来自分类Dev

在单独的类中将多个组件添加到另一个类中的JFrame

来自分类Dev

如何从另一个Java类(意味着在控制器之外)更改.fxml文件的标签文本?

来自分类Dev

如何使用java中另一个类的另一个面板更改面板的内容

来自分类Dev

如何通过另一个组件中的操作将类名切换到一个组件?

来自分类Dev

如何通过另一个类更新/更改一个类的初始化参数?

来自分类Dev

如何在React Native中从另一个功能组件更改一个功能组件的状态?

来自分类Dev

C#/ WPF从另一个类中创建的另一个线程更新UI

来自分类Dev

ReactJS.NET-如何从一个组件更新另一个组件中的props?

来自分类Dev

从另一个类添加Swing组件

来自分类Dev

从另一个类添加Swing组件

来自分类Dev

如何更新一个组件的挂钩,并使其更新另一个组件?

来自分类Dev

从另一个屏幕更改组件

来自分类Dev

从另一个更新组件 prop

Related 相关文章

  1. 1

    更改/更新另一个类中的FXML组件

  2. 2

    在另一个类中添加组件时,JPanel不会更新

  3. 3

    在另一个类中添加组件时,JPanel不会更新

  4. 4

    更改另一个组件中的状态

  5. 5

    从另一个文件中的另一个组件更改一个组件的状态

  6. 6

    从另一个文件中的另一个组件更改一个组件的状态

  7. 7

    更改另一个组件/反应图标中的一个组件

  8. 8

    android:从另一个类中的另一个线程更新UI

  9. 9

    更新另一个类中的变量

  10. 10

    如何从另一个类更新一个类中的变量

  11. 11

    从另一个组件更新组件的状态

  12. 12

    从另一个类(B类)更改类(A类)中的文本

  13. 13

    如果按下另一个组件中的链接,如何更新组件中的列表?

  14. 14

    如何在一个类中的另一个函数中更新变量?

  15. 15

    C#无法从另一个类更改窗体的组件

  16. 16

    angular 2 –通过组件更改全局服务中的接口,并在另一个组件中更新已更改的接口

  17. 17

    在单独的类中将多个组件添加到另一个类中的JFrame

  18. 18

    如何从另一个Java类(意味着在控制器之外)更改.fxml文件的标签文本?

  19. 19

    如何使用java中另一个类的另一个面板更改面板的内容

  20. 20

    如何通过另一个组件中的操作将类名切换到一个组件?

  21. 21

    如何通过另一个类更新/更改一个类的初始化参数?

  22. 22

    如何在React Native中从另一个功能组件更改一个功能组件的状态?

  23. 23

    C#/ WPF从另一个类中创建的另一个线程更新UI

  24. 24

    ReactJS.NET-如何从一个组件更新另一个组件中的props?

  25. 25

    从另一个类添加Swing组件

  26. 26

    从另一个类添加Swing组件

  27. 27

    如何更新一个组件的挂钩,并使其更新另一个组件?

  28. 28

    从另一个屏幕更改组件

  29. 29

    从另一个更新组件 prop

热门标签

归档