当前位置: 首页 > 知识库问答 >
问题:

从controller类的另一个类编辑对象的值/属性

程和煦
2023-03-14

因此,我的基本内容是:fxmldocumentcontroller.javafxmldocument.xml、operations.javamain.java。(我有一些其他类来建立Arduino连接)

这是我在main.java中的start方法:

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

    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    primaryStage.setTitle("This is the title");
    primaryStage.setScene(scene);
    primaryStage.show();

}

编辑:以下是我的操作。java:

public class Operations {

private String mensagem, hora, dados;
private String [] msgSeparada, dadosSeparados;
private int origem, destino, tipoMensagem, comprimento;
private int [] estadoDosSensores;

public FiltrarMensagem(String mensagem) {
    //remove o primeiro e ultimo carater
    mensagem = mensagem.substring(1, mensagem.length()-2);
    this.mensagem = mensagem;
    System.out.printf("Mensagem Recebida: %s\n", mensagem);
    msgSeparada = this.mensagem.split(";");
    destino = Integer.valueOf(msgSeparada[0]);
    origem = Integer.valueOf(msgSeparada[1]);
    hora = msgSeparada[2];
    tipoMensagem = Integer.valueOf(msgSeparada[3]);
    comprimento = Integer.valueOf(msgSeparada[4]);
    dados = msgSeparada[5];
    dadosSeparados = dados.split(",");
}

public void imprimir() {
    System.out.printf("Origem: %d\n", origem);
    System.out.printf("Destino: %d\n", destino);
    System.out.printf("Hora: %s\n", hora);
    System.out.printf("Tipo de Mensagem: %d\n", tipoMensagem);
    System.out.printf("Comprimento: %d\n", comprimento);
    System.out.printf("Dados: %s\n\n", dados);
    if(Integer.valueOf(dadosSeparados[0]) == 1) {
                //change label value here
    }

}

我什么都试过了,但没有成功...如果有人能帮我,我会非常感激的。

共有1个答案

公冶智刚
2023-03-14

如果您正在实例化您的“其他类”以响应按钮按下,即在控制器中,您所需要做的就是向新对象传递一个对控制器的引用。

即。

public class Controller {

    @FXML
    private Label label ;

    public void showMessage(String message) {
        label.setText(message);
    }

    @FXML
    private void handleButtonPress(ActionEvent event) {
        Operations ops = new Operations(this);
        ops.doYourThing();
    }
}

后来呢

public class Operations {

    private final Controller controller ;

    public Operations(Controller controller) {
        this.controller = controller ;
    }

    public void doYourThing() {
        // ...

        String someMessage = ... ;
        controller.showMessage(someMessage);

        // ...
    }
}
public class Model {

    private final StringProperty message = new SimpleStringProperty(); 

    public StringProperty messageProperty() P{
        return message ;
    }

    public final String getMessage() {
        return messageProperty().get();
    }

    public final void setMessage(String message) {
        messageProperty().set(message);
    }

}
public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
        Parent root = loader.load();
        Controller controller = loader.getController();

        Model model = new Model();
        controller.setModel(model);

        Scene scene = new Scene(root);

        primaryStage.setTitle("This is the title");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
public class Controller {

    @FXML
    private Label label ;

    private Model model ;

    public void setModel(Model model) {
        this.model = model ;
        model.messageProperty().addListener((obs, oldMessage, newMessage) ->
            label.setText(newMessage));
    }

    @FXML
    private void handleButtonPress(ActionEvent event) {
        Operations ops = new Operations(model);
        ops.doYourThing();
    }
}
public class Operations {

    private final Model model ;

    public Operations(Model model) {
        this.model = model ;
    }

    public void doYourThing() {
        // ...

        String someMessage = ... ;
        model.setMessage(message);

        // ...
    }
}
    null
 类似资料:
  • 我试图创建一个类来保存数量可变的项(它们本身就是另一个类对象)。 我有第二课: 然后类1包含类2的数组: 我想做的是: 第一行设置myQuotes。Curr是没有问题的,但是当我试图在数组中设置一个值时,下一行错误与运行时91对象变量或块变量未设置 有没有关于我做错了什么以及如何设置类数组中元素的值的指针? 提前谢谢!

  • 我是java新手,我正试图编写我的第一个“更大”的程序,包含几个类。我在类“CompetitionProgram”中创建了一个ArrayList并将其声明为private。 我的程序中需要这两个类(Event&ListOfEvents),这是需求之一。事件--它只是表示事件本身,比如事件名称和尝试次数(它是一个体育事件)。和ListOfEvents--它表示列表本身,并包含用于添加事件、删除事件和

  • 问题内容: 我有两节课。和。 我有一个要在中使用的功能。我当时正在考虑将的引用传递给的构造函数,然后再调用该函数。 那行得通吗?有人可以给我举个例子吗? 提前致谢! 问题答案: 是的,它将起作用。这是一种不错的方法。您只需传递A类的 实例 : 然后您可以拥有:

  • 已更新-arr3中的id属性的顺序应与arr1中的id属性的顺序相同

  • 这是我的代码: 我想将的值设置为,我该怎么做?我试过,

  • 问题内容: 我正在玩Java的反射API,并尝试处理一些字段。现在,我要确定字段的类型。字符串很简单,只需执行即可。其他非派生类也是如此。但是,如何检查派生类?例如作为的子类。我无法找到任何或方法。我是否需要遍历所有人并自己找到超人? 问题答案: 您需要此方法: 一般情况下,(以上)应替换为并应替换为 从JavaDoc: 确定此对象表示的类或接口是否与指定参数表示的类或接口相同或超类或超接口。如果