Custom Component: SelectableTitledPane
I’m working on a form to provide search criteria to find pictures in picmodo.
My goal is to provide a very easy to use interface.
Each search criteria is represented by a SelectableTitledPane
which contains the parameter settings.
Basically I have set a CheckBox
as graphic component of a TitlePane
and modified the CSS of the Default-Skin com.sun.javafx.scene.control.skin.TitledPaneSkin
.
The Checkbox
‘s selectedProperty
is bound to the expandedProperty
of TitledPane
to toggle the expand state and to get an indicator to enable / disable the criteria:
public class SelectableTitledPane extends TitledPane { private CheckBox checkBox; public SelectableTitledPane(String title, Node content) { super(title, content); checkBox = new CheckBox(title); checkBox.selectedProperty(). bindBidirectional(this.expandedProperty()); setExpanded(false); setContentDisplay(ContentDisplay.GRAPHIC_ONLY); setGraphic(checkBox); setSkin(new TitledPaneSkin(this)); lookup(".arrow"). setVisible(false); lookup(".title"). setStyle("-fx-padding: 0 0 4 -10;" + "-fx-background-color: null;"); lookup(".content"). setStyle("-fx-background-color: null; -fx-padding: 0.2em 0.2em 0.2em 1.316667em;"); } public BooleanProperty getSelectedProperty() { return checkBox.selectedProperty(); } public boolean isSelected() { return checkBox.isSelected(); } public void setSelected(boolean selected) { checkBox.setSelected(selected); } }
Basically the SelectableTitledPane
can then be used as a TitledPane, e.g.:
ComboBox ownerBox = ComboBoxBuilder.<AppUser>create(). prefWidth(150). promptText(resourceBundle .getString("search.prompt.owner")). build(); SelectableTitledPaneownerParams = new SelectableTitledPane(resourceBundle .getString("search.checkbox.owner"), ownerBox);
The following time I learn a blog, I hope that it doesnt disappoint me as a lot as this one. I imply, I know it was my choice to learn, but I actually thought youd have one thing fascinating to say. All I hear is a bunch of whining about something that you may fix should you werent too busy searching for attention.