我工作的一個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