2012-08-30 21 views
27

HBoxでアイテムを非表示にするにはどうしたらいいですか?JavaFX HBoxアイテムを非表示にする

TitledPane legendPane = new TitledPane("Legend", _legend); 
legendPane.setVisible(false); 
LineChart chart = new LineChart<Number, Number>(_xAxis, _yAxis); 

HBox hbox = new HBox(5); 
hbox.getChildren().addAll(legendPane, chart); 

上記のコードでは、グラフノードが凡例ペインが非表示のときにすべての使用可能な領域を使用したいと考えています。あなたは一時的にシーンから削除することができ

答えて

57

legendPane.setVisibleを呼び出す前に、呼び出し:

legendPane.managedProperty().bind(legendPane.visibleProperty()); 

Node.managedプロパティをシーン内のノードが他のシーンノードのレイアウトに影響を与えないようにします。

+2

これは、ノードの追加/削除がより直接的なようです。 –

7

legendPane.visibleProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
     if (newValue) { 
      hbox.getChildren().add(legendPane); 
     } else { 
      hbox.getChildren().remove(legendPane); 
     } 
    } 
}); 

またはそのサイズを操作:

legendPane.visibleProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
     if (newValue) { 
      legendPane.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
      legendPane.setPrefSize(prefWidth, prefHeight); 
     } else { 
      legendPane.setMaxSize(0, 0); 
      legendPane.setMinSize(0, 0); 

     } 
    } 
}); 
関連する問題