Я работаю над проектом 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");
}
}
Примечание: Я создал eventPane в SceneBuilder и его свойства определяются в файле eventView.fxml.
Проблема заключается в том, что конечная, нарисованная высота площадки событий равна 10, а не 100. В значении консоли 10 отображается как значение PANE_HEIGHT.
Может кто-нибудь сказать мне, почему PANE_HEIGHT не изменилось, когда инициализации называется, когда я первый назвал метод CreateView на объекте е и передается значение, умноженное PANE_HEIGHT переменную? Благодарю.
Wow, который был быстро. Спасибо, тон! Также мне нужно было убедиться, что в файле .fxml нет набора fx: controller, потому что я запускаю «значение контроллера уже указано». – hideburn