好的。在花了几个小时试图让事情正常工作后,我放弃了。
基本上我正在创建一个程序,用户在其中输入一些值,然后在点击按钮后创建一个新场景,并根据给定的值,发生不同的事情。我的问题 - 我用一些带有 getter 和 setter 的变量创建了“Settings.class”。我的假设是将输入的值存储在那里,并且在需要时我可以使用 getter 轻松访问它们。由于某种原因,它不起作用。
请记住,我尽可能地简化了它,因为如果我粘贴原始代码,它看起来会非常混乱并且会很长。我确保问题的核心是相同的。
设置类:
public class Settings {
private boolean diamonds;
public boolean getDiamonds() {
return diamonds;
}
public void setDiamonds(boolean diamonds) {
this.diamonds = diamonds;
}
}
控制器类:
public class Controller implements Initializable {
private Settings settings = new Settings();
private ProblematicOne prob = new ProblematicOne();
public void handleGoAction() throws IOException {
settings.setDiamonds(true);
prob.editText("This shall be set");
/* ..creating new stage and scene here no reason to paste it here, no probs with that.. */
@Override
public void initialize(URL location, ResourceBundle resources) {
}
}
}
还有 crème de la crème,有问题的班级:
public class ProblematicOne{
private Setting settings = new Settings();
String toBeEdited = ""; //
public void editText(String text){
if(settings.getDiamonds){ // for some reason it doesn't work; The getter returns false.
toBeEdited = text;
}else if(!settings.getDiamonds){
toBeEdited = "getDiamonds is false";
}
}
}
您的问题是 ProblematicClass 创建了一个新的设置实例,因此无法访问该值。您需要将相同的实例传递给另一个类,或者将设置类中的变量设为静态,这样您就可以在没有实例的情况下访问它们:
public class Settings {
private static boolean diamonds;
public static boolean getDiamonds() {
return diamonds;
}
public static void setDiamonds(boolean diamonds) {
this.diamonds = diamonds;
}
}
并在没有实例的情况下使用它:
Settings.setDiamonds(true);
Settings.getDiamonds();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句