gpt4 book ai didi

java - 如何编辑不同类中主类中标签的颜色?

转载 作者:行者123 更新时间:2023-12-02 09:34:40 27 4
gpt4 key购买 nike

我是一名初学者 Java 程序员,我正在制作一个小应用程序,我可以在其中输入我的学校成绩并查看我的总分。我总共有 2 个类(1 个用于 javafx 布局,1 个用于我的方法),并且我正在尝试使用方法类中的方法更改主类中的标签 (.setTextFill) 的颜色。

我尝试创建主类的对象,但这给出了错误:java.lang.reflect.InitationTargetException。

public void start(Stage primaryStage)throws Exception{
totalPercent = new Label(Methods.getTotalPercent());
totalPercent.setTextFill(Color.web("#4ecf17"));
}

//next code is in a different class
public void setPercentColor(){
if(percent < 50){
totalPercent.setTextFill(Color.web("#ff0000"));
}else if(percent >= 50 && percent < 60){
totalPercent.setTextFill(Color.web("#ff7700"));
}else if (percent >= 60 && percent < 100){
totalPercent.setTextFill(Color.web("#59ff00"));
}else{
totalPercent.setTextFill(Color.web("#000000"));
}
}

所以基本上我不知道如何使用位于不同类中的方法更改标签“totalPercent”的颜色。

最佳答案

考虑到 setPercentColor 方法,您的类的设计做得不好:它控制由另一个类管理的某些 View 的表示细节。

我建议重新设计方法以提供属性并让其他类决定如何处理该值。

在这种情况下,您可以添加 ReadOnlyIntegerProperty 百分比 而不是使用字段。这样,其他类就可以使用绑定(bind)/监听器来更新 View ,而 Methods 唯一需要担心的是更新属性。

方法

// private int percent;
private final ReadOnlyIntegerWrapper percent = new ReadOnlyIntegerWrapper();

public ReadOnlyIntegerProperty percentProperty() {
return percent.getReadOnlyProperty();
}

public int getPercent() {
return percent.get();
}

...
// percent = i
percent.set(i); // replace assinment to int field with setting the property

其他类

public void start(Stage primaryStage)throws Exception{
totalPercent = new Label();

totalPercent.textProperty().bind(Methods.percentProperty().asString());

final Color color560 = Color.web("#ff7700");
final Color color100 = Color.web("#59ff00");
totalPercent.textFillProperty().bind(Bindings.createObjectBinding(() -> {
int percent = Methods.getPercent();
if(percent < 50) {
return Color.RED;
} else if(percent < 60) {
return color60;
}else if (percent < 100){
return color100;
} else {
return Color.BLACK;
}
}, Methods.percentProperty()));
}

顺便说一句:我建议为 Methods 类选择一个更有意义的名称:大多数类都包含方法实现,因此该名称对于阅读代码的人来说基本上不包含任何有值(value)的信息。

关于java - 如何编辑不同类中主类中标签的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com