2017-12-26 1 views
0

이것은 Oracle Layout Tutorial을 기반으로합니다. 여기에는 두 개의 버튼이있는 HBox이 있습니다.JavaFX는 노드 표시 및 숨기기

두 개의 노드 (nodeCurrent 및 nodeProjected)를 추가했지만 기본 레이아웃에서 nodeCurrent/nodeProjected를 표시하거나 숨기려면 로직을 구현할 수 없습니다. 예 :

buttonCurrent.setOnAction(new EventHandler<ActionEvent>() { 
     @Override public void handle(ActionEvent e) { 
      nodeProjected.setVisible(false); 
      nodeCurrent.setVisible(true); 
     } 

또한`setManaged '로 시도했습니다. 그러나, 내가 시도해도 올바르게 작동하지 않습니다. 그렇다면 JavaFX의 노드에 대해 show/hide 토글을 구현하는 적절한 방법은 무엇입니까? 아니면 JavaFX에서 창을 표시하거나 숨길 수있는 현명한 방법이 있습니까?

업데이트 비트를 명확히하기 위해.

dataform = addDataForm(); 
root.add(dataform, 0, 1); 
search = addSearchForm(); 
search.setVisible(false); 
root.add(search, 0, 1) 

가시성을 전환해야 두 개의 버튼이 있습니다 : 루트에

public GridPane root; 
public GridPane dataform; 
public GridPane search; 

그리고 추가 :이 공공으로 정의된다

btnSearch.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 
       dataform.setVisible(false); 
       search.setVisible(true); 
       System.out.println("Search!"); 
      } 
     }); 

그러나 그들에 클릭 한 후, 내가 얻을 :

enter image description here

+1

"올바르게 작동하지 않습니다." 그럼 실제로 무엇을합니까? –

+1

nodeProjected 및 nodeCurrent를 장면에 어떻게 추가합니까? –

+1

노드가 보이지 않아야하고'HBox' 자식을 레이아웃하기 위해 무시되는 경우'visible' 및'managed' 속성을 모두 false로 설정해야합니다. 그러나 당신은 제대로 예상 된 동작을 설명하지 ... – fabian

답변

0

FXML로 GUI를 재현하고 문제를 복제했기 때문에이 답변을 직접하겠습니다. 해결책은 또 다른 부모, GridPane에 GridPane을 추가 한 다음 루트에 추가하는 것입니다.

- root 
-- GridPane 
--- GridPaneDataForm 
--- GridPaneSearchForm