2012-09-28 6 views
2

Scene의 루트 노드 인 간단한 BorderPane 인스턴스가 있습니다. 테두리 패널에는 버튼이 포함 된 GUI 컨트롤이있는 오른쪽 패널이 있습니다. 이 버튼을 클릭하면 StackPane으로 확장되는 클래스 (Foo)의 인스턴스를 만들고이 인스턴스를 테두리 창의 가운데 노드로 지정합니다.BorderPane (JavaFX 2)의 가운데 공간의 폭과 높이 얻기

나는 각각 ...getHeight()this.getLayoutBounds.getWidth()를 호출하여 국경 창 Foo 인스턴스에서 의 가능한 센터 공간의 폭과 높이 값을 좀하고 싶습니다

하지만 항상 0을 반환?

답변

5

리스너를 StackPane의 layoutBoundsProperty에 추가하거나 높이 및 너비 속성에 바인딩합니다.

JavaFX는 레이아웃 패스를 실행할 때까지 StackPane의 높이와 너비에 대해서만 0을 반환합니다. StackPane은 크기를 조정할 수있는 노드이므로 일반적으로 JavaFX는 장면에 추가되고 스테이지에 표시 될 때까지 어떤 크기인지 알 수 없습니다.

초기 크기 만 알고 싶으면 stage.Show를 호출 한 후 StackPane에서 getHeight 또는 getWidth를 호출 할 수 있습니다.

미래의 레이아웃 패스는 사용 가능한 영역 변경으로 StackPane의 크기를 조정할 수 있으므로 현재 창 크기를 항상 알기를 원하면 리스너 또는 바인딩을 사용하는 것이 좋습니다.

관련 문제