JavaFX如何从第一个控制器访问第二个控制器的控件

尼泊尔12

我有一个关于Javafx控制器的问题。可以说,我有多个在主应用程序中绑定在一起的fxml文件。然后,每个fxml文件都有单独的控制器。让我们看一下下面的结构

com.par.app
  - MainApp.java   -> This is the main Application
  - FirstController.java 
  - SecondController.java

com.par.app.view
  - First.fxml
  - Second.fxml 

com.par.app.model
  - MyModel   -> This has some getter and setter methods.

现在按照上述结构,我在First.fxml中有一个复选框,在Second.fxml中有一个标签。

我的问题:如何通过选中和取消选中First.FXML中的复选框来设置Second.FXML中的标签文本,我已经尝试过这样:

// In FirstController.Java
  1) Initialize the SecondController
  2) Get checkbox from FXMl as , priate CheckBox box1;
  3) On initialize(....) method, I have set the event handler, as box1.setOnAction(enableHandle)
  4) Finally the event Handler as,
  EventHandler<ActionEvent> enableHandle = new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        if (box1.isSelected()) {

            secondController.setLabelText("PoP");
        } else {
            secondController.setText("Gone Wrong");
        }
    }
};

Similarly, On my second controller I have declared FXML control as, 
@FXML
private Label lblTes;

// the method
public void setLabelText(String a)
{
 this.lblTes.settest(a);
}

->以上将无法正常工作,因为它返回未知来源。

我尝试的下一种方法是使用MyModel,并使用getter和setter方法,但未成功。

对不起,我的问题很长。我尝试过但没有成功。我该怎么做才能解决这个问题?

提前致谢。

// my model looks like
public class MyModel {
   private String btnname;
   public String getBtnname() {
       return btnname;
   }
   public void setBtnname(String btnname) {
       this.btnname = btnname;
   }
}
奥利维尔·莫里斯(Olivier Meurice)

当您选中复选框时,则在FirstView的控制器中(在其中实现复选框的事件处理程序),更改模型中的标签文本。您的模型应绑定到视图,因此SecondView中的标签文本应更新。

如果未将模型绑定到视图,则可以使用观察者模式。

1.更改模型并扩展java.util.Observable

public class MyModel extends Observable {
  private String btnname;
  public String getBtnname() {
    return btnname;
  }
  public void setBtnname(String btnname) {
    this.btnname = btnname;
    pingObservers()
  }
  private void pingObservers() {
   setChanged();
   notifyObservers();
  }
}
  1. 将SecondController注册为模型的观察者。当您将模型设置为控制器时,添加类似于以下内容的行:model.addObserver(this);

  2. SecondController必须实现java.util.Observer.update(...)
    void update(Observable o,Object o1){//使用模型值设置标签文本}

  3. 在FirstController中的事件处理程序中,当您在模型上调用setBtnname()方法时,将调用SecondController中的update()方法。在那里,您可以添加代码来更改标签文本。由于标签位于由SecondController控制的视图中,因此您只需要在带有@FXML批注的控制器中注入标签的引用即可。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据从第二个视图传递到第一个视图控制器

来自分类Dev

5秒后从第一个视图控制器移至第二个

来自分类Dev

将数据从第二个视图传递到第一个视图控制器

来自分类Dev

ios从第二个视图控制器向第一个视图控制器发送Objective-c数据发送

来自分类Dev

无法将第二个视图控制器嵌入第一个视图控制器的顶部

来自分类Dev

在第一个视图控制器的标签中显示输入到文本字段(在第二个视图控制器中)的文本?

来自分类Dev

将数据移动到另一个视图控制器,但是第二个视图控制器先加载第一个视图控制器

来自分类Dev

如何通过选项卡栏控制器将值从第二个视图传递到第一个视图

来自分类Dev

将数据从视图控制器传递到第一个详细信息控制器,然后传递到第二个详细信息控制器

来自分类Dev

如何将字符串从第二个控制器中的文本字段(嵌入在表格单元中)传递回第一个控制器中的标签(也嵌入在表格单元中)?

来自分类Dev

如何将第二个视图控制器文本字段值传递给第一个视图控制器数组并在 swift4 中点击按钮时关闭

来自分类Dev

以编程方式从一个视图控制器移至第二个视图控制器

来自分类Dev

以编程方式从一个视图控制器移至第二个视图控制器

来自分类Dev

如何访问导航控制器中的倒数第二个ViewController?

来自分类Dev

当我展开第二个视图控制器时,第一个视图控制器中的所有变量都变空了

来自分类Dev

无法加载第二个控制器

来自分类Dev

微风与第二个控制器

来自分类Dev

无法加载第二个控制器

来自分类Dev

无法访问Codeigniter中的第二个控制器

来自分类Dev

我想以快速代码访问第二个视图控制器中的var

来自分类Dev

从第二个视图控制器访问全局变量时的预期声明

来自分类Dev

UIPage ViewController,我想从非 uipage 视图控制器导航另一个第二个视图控制器

来自分类Dev

AngularJS 1 在一个控制器中内联注入 $scope 会破坏第二个控制器

来自分类Dev

启动第二个视图控制器后,如何关闭父视图控制器?

来自分类Dev

同一视图中的第二个模型未发布到控制器

来自分类Dev

如何在第二个控制器中刷新数据

来自分类Dev

如何在Ruby on Rails控制器中创建第二个create方法?

来自分类Dev

如何将值传递给第二个视图控制器的initWithCoder?

来自分类Dev

如何将标签数据传递到第二个视图控制器中的另一个标签

Related 相关文章

  1. 1

    将数据从第二个视图传递到第一个视图控制器

  2. 2

    5秒后从第一个视图控制器移至第二个

  3. 3

    将数据从第二个视图传递到第一个视图控制器

  4. 4

    ios从第二个视图控制器向第一个视图控制器发送Objective-c数据发送

  5. 5

    无法将第二个视图控制器嵌入第一个视图控制器的顶部

  6. 6

    在第一个视图控制器的标签中显示输入到文本字段(在第二个视图控制器中)的文本?

  7. 7

    将数据移动到另一个视图控制器,但是第二个视图控制器先加载第一个视图控制器

  8. 8

    如何通过选项卡栏控制器将值从第二个视图传递到第一个视图

  9. 9

    将数据从视图控制器传递到第一个详细信息控制器,然后传递到第二个详细信息控制器

  10. 10

    如何将字符串从第二个控制器中的文本字段(嵌入在表格单元中)传递回第一个控制器中的标签(也嵌入在表格单元中)?

  11. 11

    如何将第二个视图控制器文本字段值传递给第一个视图控制器数组并在 swift4 中点击按钮时关闭

  12. 12

    以编程方式从一个视图控制器移至第二个视图控制器

  13. 13

    以编程方式从一个视图控制器移至第二个视图控制器

  14. 14

    如何访问导航控制器中的倒数第二个ViewController?

  15. 15

    当我展开第二个视图控制器时,第一个视图控制器中的所有变量都变空了

  16. 16

    无法加载第二个控制器

  17. 17

    微风与第二个控制器

  18. 18

    无法加载第二个控制器

  19. 19

    无法访问Codeigniter中的第二个控制器

  20. 20

    我想以快速代码访问第二个视图控制器中的var

  21. 21

    从第二个视图控制器访问全局变量时的预期声明

  22. 22

    UIPage ViewController,我想从非 uipage 视图控制器导航另一个第二个视图控制器

  23. 23

    AngularJS 1 在一个控制器中内联注入 $scope 会破坏第二个控制器

  24. 24

    启动第二个视图控制器后,如何关闭父视图控制器?

  25. 25

    同一视图中的第二个模型未发布到控制器

  26. 26

    如何在第二个控制器中刷新数据

  27. 27

    如何在Ruby on Rails控制器中创建第二个create方法?

  28. 28

    如何将值传递给第二个视图控制器的initWithCoder?

  29. 29

    如何将标签数据传递到第二个视图控制器中的另一个标签

热门标签

归档