2012-10-26 5 views
0

Javafx2에서는 항목을 창에 추가 한 다음 보이지 않게 만드는 것이 레이아웃에서 여전히 공간을 차지하는 것으로 보입니다. 아이가 보이지 않게 된 후 레이아웃을 조정하도록 창에 질문하는 방법을 아는 사람이 있습니까?창 다시 레이아웃을 묻는 방법

다음은 저의 문제점을 보여주는 샘플 프로그램입니다. VBox에는 3 개의 버튼이 있습니다. 상단 또는 가운데 단추를 클릭하면 보이지 않게되지만 간격이 생깁니다.

public class VisibilityTest extends Application { 

Button button1 = null; 
Button button2 = null; 
Button button3 = null; 
VBox box  = null; 

@Override 
public void start(Stage primaryStage) { 
    button1 = new Button("Button 1"); 
    button2 = new Button("Button 2"); 
    button3 = new Button("Button 3"); 

    box = new VBox(); 
    box.getChildren().add(button1); 
    box.getChildren().add(button2); 
    box.getChildren().add(button3); 
    button1.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent t) { 
      button1.setVisible(false); 
     } 
    }); 
    button2.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent t) { 
      button2.setVisible(false); 
     } 
    }); 
    button3.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent t) { 
      button3.setVisible(false); 
     } 
    }); 
    Scene scene = new Scene(box, 300, 250); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
} 
+0

방금 ​​읽은 VBox javadoc'VBox는 자식의 표시 속성 값에 관계없이 각 관리되는 자식을 레이아웃합니다. 관리되지 않는 아이들은 무시된다. 가시성이 스윙에서보다 javafx에서 다른 것처럼 보입니다. 표시 항목은 레이아웃에서 무시되지 않습니다. – Stinky

+0

예 관련이 : http://stackoverflow.com/q/12200195/682495](http://stackoverflow.com/q/12200195/682495) –

답변

0

장면 그래프에서 컨트롤을 제거해야합니다.

parent.getChildren().remove(theControl); 
+0

항목을 제거하고 나중에 다시 추가하면 내 용도로 사용됩니다. 감사! – Stinky

1

상위 구성 요소 인 validate()으로 전화하십시오.

+0

흠 ... validate() 메서드가 표시되지 않습니다. javafx pane 클래스에서. – Stinky

관련 문제