我工作的一个MVC项目,有以下问题:覆盖方法初始化不能识别变量值变化时调用
在一个名为CentralLayout的观点是下面的代码:
EventView e = new EventView();
gridSchedule.add(e.createView(5), 1, 1, 1, 5);
其中CreateView的方法在以下接口中定义:
public interface Creatable {
public Node createView();
public Node createView(int eventDuration);
}
使用EventView是这样实现的:
public class EventView extends BaseViewController implements Initializable, Creatable {
private int PANE_HEIGHT = 10;
final int PANE_WIDTH = 99;
@FXML
private Label lblObjectOne;
@FXML
private Label lblObjectTwo;
@FXML
private Pane eventPane;
@Override
public Node createView() {
return null;
}
@Override
public Node createView(int eventDuration) {
PANE_HEIGHT = eventDuration * 20;
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("eventView.fxml"));
Parent root = null;
try {
root = fxmlLoader.load();
} catch (IOException e) {
e.printStackTrace();
}
return root;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
System.out.println(PANE_HEIGHT);
eventPane.setMaxHeight(PANE_HEIGHT);
eventPane.setMaxWidth(PANE_WIDTH);
lblObjectOne.setText("test");
lblObjectTwo.setText("test");
}
}
注:我在SceneBuilder创建eventPane及其属性在eventView.fxml文件中定义。
问题是,eventPane的最终绘制高度等于10,而不是100.在控制台值10中,打印为PANE_HEIGHT值。
谁能告诉我,为什么PANE_HEIGHT当初始化被称为没有改变,当我第一次拜访对象Ë的的CreateView的方法,并通过了成倍PANE_HEIGHT变量的值?谢谢。
哇,这是快。谢谢你的伴侣!另外我需要确保.fxml文件没有设置fx:controller,因为我遇到了“Controller value already already specified”。 – hideburn