2012-08-30 16 views
27

मैं एचबॉक्स में किसी आइटम को कैसे छुपा सकता हूं, और इस आइटम द्वारा अन्य वस्तुओं के लिए उपयोग की गई जगह बनाई गई है।जावाएफएक्स एचबीओक्स छुपाएं आइटम

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); 

     } 
    } 
}); 
संबंधित मुद्दे