2016-06-03 3 views
-1

내 fxml 파일에 BorderPane이 있습니다. 그리고 컨트롤러 클래스의 코드에서 레이블을 센터에 추가해야합니다. 내가 이해하기 때문에 initialize() 방법으로해야하지만, 이것을 깨닫는 방법을 찾지 못했습니다.JavaFX는 동적으로 fxml 파일에 정의 된 창에 레이블을 추가합니다.

P. fxml 파일에 정적으로 추가하고 싶지는 않습니다. 그 양은 매번 다를 수 있기 때문에 5 일 수도 있고 20 일 수도 있습니다.이 경우 최대 금액을 추가하여 보이지 않게해야합니다. 그러나 나는 그것이 최선의 결정이라고 생각하지 않는다.

+0

fxml없이 처리해야 할 수도 있습니다. 훨씬 쉽습니다. fxml을 사용하면 불가능한 일이 아닙니다 (어떤 시나리오를 가지고 있는지 모르므로). 그러나 ArrayList와 같은 유연한 컬렉션에 추가 할 수 있습니다 (목록에 원하는 많은 레이블을 추가 한 다음 배열 목록을 반복하여 레이블을 추가 함). 존재한다). 물론, 더 나은 방법이있을 수 있습니다, 이것은 처음에 내 마음을 때리는 것입니다. –

답변

0

컨트롤러를 FXML에 바인딩 한 다음 호출 할 initialize 메소드를 만들어야합니다. @FXML 주석으로 주석을 추가해야합니다.

@FXML 주석으로 테두리 창을 연결해야합니다. 여기서 myBorderPane이라고 가정합니다.

@FXML 
private void initialize() { 
    //Create the label 
    Label myLabel = new Label("Will go in the Center Pane"); 
    myBorderPane.setCenter(myLabel); 
} 

분명히 단 하나의 레이블을 창에 붙여 넣기 만하면됩니다. 당신이 필요로하는 것을 생성하기 위해 여기 주위에 어떤 논리를 만들어야 할 것 같습니다. 또한 레이아웃 등을 관리해야합니다.

바라기를 이것은 올바른 방향으로 당신을 안내합니다.

+0

하지만 나는 이미 그런 변종을 시도했지만 아무 것도 얻지 못했습니다. 내 코드가 있습니다 : ' public class Controller { @FXML BorderPane pane; @FXML private void initialize() { pane.setCenter (새 레이블 ("XYZ")); } } – HadJower5

+0

코드를 시도했지만 작동하지 않는 경우 질문에 넣어야합니다. 문제를 재연하기에 충분한 코드 (FXML, 컨트롤러 및 메인 클래스)를 보여줍니다. –

+0

실수를 발견했습니다. Controller를 fxml 파일의 pane 매개 변수로 추가하지 않았습니다. 이제 모든 것이 잘됩니다. – HadJower5

관련 문제