使用两个不同的值绑定标签-javafx

时间:2018-02-19 08:26:09

标签: java javafx label

我有一个实时React.cloneElement用户应用程序,其标签为:React.createContext, 当用户回答问题时,答案数量不会增加,并且当一个班级向用户提出问题时,问题数量会增加。

标签最初看起来像 - javafx

我想将两个不同的变量No of answers/No of questions绑定到此标签,例如,如果我向用户投掷了10个问题,并且用户已回答2,它应该如下所示:0/0

(NumberOfAnswers, NumberOfQuestions)

这只会绑定标签的答案数。

提前致谢。

2 个答案:

答案 0 :(得分:4)

您所需要的只是Bindings.concat(Object... args)

例如:

IntegerProperty noOfAnswers = answerConnector.noOfAnswersProperty();
IntegerProperty noOfQuestions = answerConnector.noOfQuestionsProperty();
ansQuesLbl.textProperty().bind(Bindings.concat(noOfAnswers, "/", noOfQuestions));

或者:

IntegerProperty noOfAnswers = answerConnector.noOfAnswersProperty();
IntegerProperty noOfQuestions = answerConnector.noOfQuestionsProperty();
ansQuesLbl.textProperty().bind(noOfAnswers.asString().concat("/").concat(noOfQuestions.asString()));

注意:为避免属性问题,我建议遵循javafx命名约定,以便answerConnector的类看起来像这样:

public class AnswerConnector {
    private final IntegerProperty noOfAnswers = new SimpleIntegerProperty(0);

    public IntegerProperty noOfAnswersProperty() {
        return noOfAnswers;
    }

    public int getNoOfAnswers() {
        return noOfAnswers.get();
    }

    public void setNoOfAnswers(int noOfAnswers) {
        this.noOfAnswers.set(noOfAnswers);
    }

    // same for noOfQuestions
}

答案 1 :(得分:2)

Bindings.format可用于此目的:

ansQuesLbl.textProperty().bind(Bindings.format("%d/%d",
                                               answerConnector.noOfAnswersProperty(),
                                               answerConnector.noOfQuestionsProperty()));