下面列出了怎么用javafx.scene.control.ToggleButton的API类实例代码及写法,或者点击链接到github查看源代码。
public ButtonCell(TableColumn<T, Boolean> column, Glyph onGraphic, Glyph offGraphic) {
button = new ToggleButton();
button.setGraphic(onGraphic);
button.setSelected(true);
button.setOnMouseClicked(event -> {
final TableView<T> tableView = getTableView();
tableView.getSelectionModel().select(getTableRow().getIndex());
tableView.edit(tableView.getSelectionModel().getSelectedIndex(), column);
if (button.isSelected()) {
commitEdit(true);
button.setGraphic(onGraphic);
} else {
commitEdit(false);
button.setGraphic(offGraphic);
}
});
}
/**
* {@inheritDoc}
*/
@Override
public void initialise() {
ToggleGroup toggleGroup = new ToggleGroup();
this.iconsListButton = new ToggleButton();
this.iconsListButton.setToggleGroup(toggleGroup);
this.iconsListButton.getStyleClass().addAll("listIcon", "iconsList");
this.compactListButton = new ToggleButton();
this.compactListButton.setToggleGroup(toggleGroup);
this.compactListButton.getStyleClass().addAll("listIcon", "compactList");
this.detailsListButton = new ToggleButton();
this.detailsListButton.setToggleGroup(toggleGroup);
this.detailsListButton.getStyleClass().addAll("listIcon", "detailsList");
HBox container = new HBox(iconsListButton, compactListButton, detailsListButton);
container.getStyleClass().add("listChooser");
getChildren().addAll(container);
}
public static ButtonBase createToolBarButton(Action action) {
ButtonBase button = (action.selected != null) ? new ToggleButton() : new Button();
button.setGraphic(FontAwesomeIconFactory.get().createIcon(action.icon, "1.2em"));
String tooltip = action.text;
if (tooltip.endsWith("..."))
tooltip = tooltip.substring(0, tooltip.length() - 3);
if (action.accelerator != null)
tooltip += " (" + action.accelerator.getDisplayText() + ')';
button.setTooltip(new Tooltip(tooltip));
button.setFocusTraversable(false);
if (action.action != null)
button.setOnAction(action.action);
if (action.disable != null)
button.disableProperty().bind(action.disable);
if (action.selected != null)
((ToggleButton)button).selectedProperty().bindBidirectional(action.selected);
return button;
}
public static Tuple3<Label, InputTextField, ToggleButton> addTopLabelInputTextFieldSlideToggleButton(GridPane gridPane,
int rowIndex,
String title,
String toggleButtonTitle) {
InputTextField inputTextField = new InputTextField();
ToggleButton toggleButton = new JFXToggleButton();
toggleButton.setText(toggleButtonTitle);
VBox.setMargin(toggleButton, new Insets(4, 0, 0, 0));
final Tuple2<Label, VBox> topLabelWithVBox = addTopLabelWithVBox(gridPane, rowIndex, title, inputTextField, 0);
topLabelWithVBox.second.getChildren().add(toggleButton);
return new Tuple3<>(topLabelWithVBox.first, inputTextField, toggleButton);
}
@Override
public ValueType getValue() {
ObservableList<ToggleButton> buttons = segmentedButton.getButtons();
for (ToggleButton button : buttons) {
if (button.isSelected()) {
String buttonText = button.getText();
for (ValueType toggleValue : toggleValues) {
if (toggleValue.toString().equals(buttonText)) {
return toggleValue;
}
}
}
}
return null;
}
private ToggleButton createToggleButton(final ActionDescription action)
{
final ToggleButton button = new ToggleButton();
try
{
button.setGraphic(ImageCache.getImageView(action.getIconResourcePath()));
}
catch (final Exception ex)
{
logger.log(Level.WARNING, "Cannot load action icon", ex);
}
button.setTooltip(new Tooltip(action.getToolTip()));
button.setSelected(true);
button.selectedProperty()
.addListener((observable, old_value, enabled) -> action.run(this, enabled) );
return button;
}
private ButtonBase newItem(final boolean toggle, final ToolIcons icon, final String tool_tip)
{
final ButtonBase item = toggle ? new ToggleButton() : new Button();
try
{
item.setGraphic(new ImageView(Activator.getIcon(icon.name().toLowerCase())));
}
catch (Exception ex)
{
logger.log(Level.WARNING, "Cannot get icon" + icon, ex);
item.setText(icon.toString());
}
item.setTooltip(new Tooltip(tool_tip));
item.setMinSize(ToolbarHandler.BUTTON_WIDTH, ToolbarHandler.BUTTON_HEIGHT);
toolbar.getItems().add(item);
return item;
}
public ButtonCell(TableColumn<T, Boolean> column, Glyph onGraphic,
Glyph offGraphic) {
button = new ToggleButton();
button.setGraphic(onGraphic);
button.setSelected(true);
button.setOnMouseClicked(event -> {
final TableView<T> tableView = getTableView();
tableView.getSelectionModel().select(getTableRow().getIndex());
tableView.edit(tableView.getSelectionModel().getSelectedIndex(),
column);
if (button.isSelected()) {
commitEdit(true);
button.setGraphic(onGraphic);
} else {
commitEdit(false);
button.setGraphic(offGraphic);
}
});
}
private ToggleButton setupButton(ToggleGroup group, ComponentLauncherInfo componentInfo) {
ToggleButton button = new ToggleButton(componentInfo.name.getValue(), setupImageView(componentInfo.image));
button.setAlignment(Pos.CENTER_LEFT);
button.setToggleGroup(group);
button.setMinHeight(30);
button.setMaxWidth(Double.MAX_VALUE);
button.setOnAction(e -> {
if(button.isSelected()) {
modifiedSelection(componentInfo);
} else {
modifiedSelection(null);
}
});
GridPane.setHgrow(button, Priority.ALWAYS);
return button;
}
protected void addAccountNameTextFieldWithAutoFillToggleButton() {
Tuple3<Label, InputTextField, ToggleButton> tuple = addTopLabelInputTextFieldSlideToggleButton(gridPane, ++gridRow,
Res.get("payment.account.name"), Res.get("payment.useCustomAccountName"));
accountNameTextField = tuple.second;
accountNameTextField.setPrefWidth(300);
accountNameTextField.setEditable(false);
accountNameTextField.setValidator(inputValidator);
accountNameTextField.setFocusTraversable(false);
accountNameTextField.textProperty().addListener((ov, oldValue, newValue) -> {
paymentAccount.setAccountName(newValue);
updateAllInputsValid();
});
useCustomAccountNameToggleButton = tuple.third;
useCustomAccountNameToggleButton.setSelected(false);
useCustomAccountNameToggleButton.setOnAction(e -> {
boolean selected = useCustomAccountNameToggleButton.isSelected();
accountNameTextField.setEditable(selected);
accountNameTextField.setFocusTraversable(selected);
autoFillNameTextField();
});
}
private HBox getToolBox() {
final Tuple3<VBox, Label, AutocompleteComboBox<CurrencyListItem>> currencyComboBoxTuple = addTopLabelAutocompleteComboBox(
Res.get("shared.currency"));
currencyComboBox = currencyComboBoxTuple.third;
currencyComboBox.setCellFactory(GUIUtil.getCurrencyListItemCellFactory(Res.get("shared.trade"),
Res.get("shared.trades"), model.preferences));
Pane spacer = new Pane();
HBox.setHgrow(spacer, Priority.ALWAYS);
toggleGroup = new ToggleGroup();
ToggleButton year = getToggleButton(Res.get("time.year"), TradesChartsViewModel.TickUnit.YEAR, toggleGroup, "toggle-left");
ToggleButton month = getToggleButton(Res.get("time.month"), TradesChartsViewModel.TickUnit.MONTH, toggleGroup, "toggle-center");
ToggleButton week = getToggleButton(Res.get("time.week"), TradesChartsViewModel.TickUnit.WEEK, toggleGroup, "toggle-center");
ToggleButton day = getToggleButton(Res.get("time.day"), TradesChartsViewModel.TickUnit.DAY, toggleGroup, "toggle-center");
ToggleButton hour = getToggleButton(Res.get("time.hour"), TradesChartsViewModel.TickUnit.HOUR, toggleGroup, "toggle-center");
ToggleButton minute10 = getToggleButton(Res.get("time.minute10"), TradesChartsViewModel.TickUnit.MINUTE_10, toggleGroup, "toggle-right");
HBox toggleBox = new HBox();
toggleBox.setSpacing(0);
toggleBox.setAlignment(Pos.CENTER_LEFT);
toggleBox.getChildren().addAll(year, month, week, day, hour, minute10);
final Tuple2<Label, VBox> topLabelWithVBox = getTopLabelWithVBox(Res.get("shared.interval"), toggleBox);
HBox hBox = new HBox();
hBox.setSpacing(0);
hBox.setAlignment(Pos.CENTER_LEFT);
hBox.getChildren().addAll(currencyComboBoxTuple.first, spacer, topLabelWithVBox.second);
return hBox;
}
/**
* {@inheritDoc}
*/
@Override
protected Optional<ToggleButton> createAllButton() {
final ToggleButton allCategoryButton = createSidebarToggleButton(tr("All"));
allCategoryButton.setId("all-button");
allCategoryButton.setOnMouseClicked(event -> getControl().setNothingSelected());
return Optional.of(allCategoryButton);
}
/**
* {@inheritDoc}
*/
@Override
protected ToggleButton convertToToggleButton(EngineCategoryDTO category) {
final ToggleButton categoryButton = createSidebarToggleButton(category.getName());
// TODO: use engine category ID instead of name
categoryButton
.setId(String.format("engines-%s", SidebarToggleGroupBaseSkin.getToggleButtonId(category.getName())));
categoryButton.setOnAction(event -> getControl().setSelectedElement(category));
return categoryButton;
}
public void selectedTab(int index) {
int size = tabBox.getChildren().size();
if (index < size) {
Node node = tabBox.getChildren().get(index);
if (node instanceof ToggleButton) {
group.selectToggle((ToggleButton) node);
}
}
}
/**
* {@inheritDoc}
*/
@Override
protected Optional<ToggleButton> createAllButton() {
final ToggleButton allCategoryButton = createSidebarToggleButton(tr("All"));
allCategoryButton.setId("all-button");
allCategoryButton.setOnMouseClicked(event -> getControl().setNothingSelected());
return Optional.of(allCategoryButton);
}
public void setTheme(ThemeDTO theme) {
if (theme.getTextPosition() == -1) {
for (ToggleButton button : buttons) {
button.setSelected(false);
}
} else {
buttons.get(theme.getTextPosition()).setSelected(true);
}
}
@Override
public final void initialize(final URL location, final ResourceBundle resources) {
try {
MenuController.getInstance().setCommentPaneMenuEnablement(true);
MenuController.getInstance().getMenuOverlayPane().setDisable(false);
}
catch (RuntimeException e) {
// Catching exception so that JavaFX preview works.
}
showCommentPane(PreferenceUtil.getPreferenceBoolean(KEY_SHOW_COMMENT_PANE));
showOverlayPane(PreferenceUtil.getPreferenceBoolean(KEY_SHOW_OVERLAY_PANE));
mColorPicker.setValue(PreferenceUtil.getPreferenceColor(KEY_OVERLAY_COLOR));
mColorPicker.getStyleClass().add("button");
mSliderBrightness.setMin(-1);
mSliderBrightness.setValue(0);
mSliderBrightness.setMax(1);
mSliderContrast.setMin(-1);
mSliderContrast.setValue(0);
mSliderContrast.setMax(1);
mSliderSaturation.setMin(-1);
mSliderSaturation.setValue(0);
mSliderSaturation.setMax(1);
mSliderColorTemperature.setMin(-1);
mSliderColorTemperature.setValue(0);
mSliderColorTemperature.setMax(1);
mOverlayButtons = new ToggleButton[] {mBtnOverlayCircle, mBtnOverlay1, mBtnOverlay2, mBtnOverlay3, mBtnOverlay4, mBtnOverlay5, mBtnOverlay6,
mBtnOverlay7, mBtnOverlay8, mBtnOverlay9, mBtnOverlay10};
createOverlayButtonContextMenus();
mIsInitialized = true;
}
@Override
public void setValue(ValueType value) {
if (value != null) {
String stringValue = value.toString();
ObservableList<ToggleButton> buttons = segmentedButton.getButtons();
for (ToggleButton button : buttons) {
if (button.getText().equals(stringValue)) {
button.setSelected(true);
break;
}
}
}
}
/**
* {@inheritDoc}
*/
@Override
protected Optional<ToggleButton> createAllButton() {
final ToggleButton allCategoryButton = createSidebarToggleButton(tr("All"));
allCategoryButton.setId("all-button");
allCategoryButton.setOnAction(event -> getControl().setNothingSelected());
return Optional.of(allCategoryButton);
}
public ToggleButtonSample() {
// create label to show result of selected toggle button
final Label label = new Label();
label.setStyle("-fx-font-size: 2em;");
// create 3 toggle buttons and a toogle group for them
final ToggleButton tb1 = new ToggleButton("Cat");
final ToggleButton tb2 = new ToggleButton("Dog");
final ToggleButton tb3 = new ToggleButton("Horse");
ToggleGroup group = new ToggleGroup();
tb1.setToggleGroup(group);
tb2.setToggleGroup(group);
tb3.setToggleGroup(group);
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
@Override public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle selectedToggle) {
if(selectedToggle!=null) {
label.setText(((ToggleButton) selectedToggle).getText());
}
else {
label.setText("...");
}
}
});
// select the first button to start with
group.selectToggle(tb1);
// add buttons and label to grid and set their positions
GridPane.setConstraints(tb1,0,0);
GridPane.setConstraints(tb2,1,0);
GridPane.setConstraints(tb3,2,0);
GridPane.setConstraints(label,0,1,3,1);
GridPane grid = new GridPane();
grid.setVgap(20);
grid.setHgap(10);
getChildren().add(grid);
grid.getChildren().addAll(tb1, tb2, tb3, label);
}
/**
* Create the {@link ToolBar} for controlling map parameters.
*/
public void initializeToolBar() {
getItems().addAll(
directionsBtn = new ToggleButton("Directions"),
new Separator(),
mapFlyout = new Flyout(mapChooser = new ToggleButton("Create / Select Map"), getMapControl()),
new Separator(),
routeFlyout = new Flyout(routeChooser = new ToggleButton("Create / Select Route"), getRouteControl())
);
}
private ToggleButton createToggleButton(ToggleGroup grp, String styleClass, Runnable action, String toolTip) {
ToggleButton button = new ToggleButton();
button.setToggleGroup(grp);
button.getStyleClass().add(styleClass);
button.setOnAction(evt -> {
action.run();
area.requestFocus();
});
button.setPrefWidth(25);
button.setPrefHeight(25);
if (toolTip != null) {
button.setTooltip(new Tooltip(toolTip));
}
return button;
}
protected <T> void addTogglePropBinding(final @NotNull ToggleButton button, final @NotNull ShapeProperties<T> prop, final T value) {
final var baseButtonBinder = toggleButtonBinder()
.on(button)
.end(() -> update());
baseButtonBinder
.toProduce(() -> createModShProp(value, prop))
.when(handActiv)
.bind();
baseButtonBinder
.toProduce(() -> firstPropPen(value, prop))
.when(pencilActiv)
.bind();
}
public static void reset() {
add(Node.class, JavaFXElement.class);
add(TextInputControl.class, JavaFXTextInputControlElement.class);
add(HTMLEditor.class, JavaFXHTMLEditor.class);
add(CheckBox.class, JavaFXCheckBoxElement.class);
add(ToggleButton.class, JavaFXToggleButtonElement.class);
add(Slider.class, JavaFXSliderElement.class);
add(Spinner.class, JavaFXSpinnerElement.class);
add(SplitPane.class, JavaFXSplitPaneElement.class);
add(ProgressBar.class, JavaFXProgressBarElement.class);
add(ChoiceBox.class, JavaFXChoiceBoxElement.class);
add(ColorPicker.class, JavaFXColorPickerElement.class);
add(ComboBox.class, JavaFXComboBoxElement.class);
add(DatePicker.class, JavaFXDatePickerElement.class);
add(TabPane.class, JavaFXTabPaneElement.class);
add(ListView.class, JavaFXListViewElement.class);
add(TreeView.class, JavaFXTreeViewElement.class);
add(TableView.class, JavaFXTableViewElement.class);
add(TreeTableView.class, JavaFXTreeTableViewElement.class);
add(CheckBoxListCell.class, JavaFXCheckBoxListCellElement.class);
add(ChoiceBoxListCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxListCell.class, JavaFXComboBoxCellElement.class);
add(CheckBoxTreeCell.class, JavaFXCheckBoxTreeCellElement.class);
add(ChoiceBoxTreeCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxTreeCell.class, JavaFXComboBoxCellElement.class);
add(TableCell.class, JavaFXTableViewCellElement.class);
add(CheckBoxTableCell.class, JavaFXCheckBoxTableCellElement.class);
add(ChoiceBoxTableCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxTableCell.class, JavaFXComboBoxCellElement.class);
add(TreeTableCell.class, JavaFXTreeTableCellElement.class);
add(CheckBoxTreeTableCell.class, JavaFXCheckBoxTreeTableCell.class);
add(ChoiceBoxTreeTableCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxTreeTableCell.class, JavaFXComboBoxCellElement.class);
add(WebView.class, JavaFXWebViewElement.class);
add(GenericStyledArea.GENERIC_STYLED_AREA_CLASS, RichTextFXGenericStyledAreaElement.class);
}
@Override
public boolean marathon_select(String value) {
boolean selected = Boolean.parseBoolean(value);
boolean current = ((ToggleButton) node).isSelected();
if (selected != current) {
click();
}
return true;
}
/** @return Index of the selected tab. -1 if there are no buttons or nothing selected */
public int getSelectedTab()
{
final ObservableList<Node> siblings = buttons.getChildren();
for (int i=0; i<siblings.size(); ++i)
if (((ToggleButton) siblings.get(i)).isSelected())
return i;
return -1;
}
/** Select a tab
*
* <p>Does not invoke listener.
*
* @param index Index of tab to select */
public void selectTab(int index)
{
final ObservableList<Node> siblings = buttons.getChildren();
if (index < 0)
index = 0;
if (index >= siblings.size())
index = siblings.size() - 1;
if (index < 0)
return; // No buttons, index is -1
handleTabSelection((ToggleButton)siblings.get(index), false);
}
/** Indicate the active tab, notify listeners
* @param pressed Button that was pressed
*/
private void handleTabSelection(final ToggleButton pressed, final boolean notify)
{
final ObservableList<Node> siblings = buttons.getChildren();
int i = 0, selected_tab = -1;
for (Node sibling : siblings)
{
final ToggleButton button = (ToggleButton) sibling;
if (button == pressed)
{
// If user clicked a button that was already selected,
// it would now be de-selected, leaving nothing selected.
if (! pressed.isSelected())
{ // Re-select!
pressed.setSelected(true);
}
// Highlight active tab by setting it to the 'selected' color
pressed.setStyle("-fx-color: " + JFXUtil.webRGB(selected));
selected_tab = i;
}
else if (button.isSelected())
{
// Radio-button behavior: De-select other tabs
button.setSelected(false);
button.setStyle("-fx-color: " + JFXUtil.webRGB(deselected));
}
++i;
}
final Listener safe_copy = listener;
if (selected_tab >= 0 && notify && safe_copy != null)
safe_copy.tabSelected(selected_tab);
}
/** Create entry for each widget type
* @param palette_groups Map with parent panes for each widget category
*/
private void createWidgetEntries(final Map<WidgetCategory, Pane> palette_groups)
{
final Set<String> deprecated = Preferences.hidden_widget_types;
// Sort alphabetically-case-insensitive widgets inside their group
// based on the widget's name, instead of the original set order or class name.
WidgetFactory.getInstance()
.getWidgetDescriptions()
.stream()
.filter(desc -> !deprecated.contains(desc.getType()))
.sorted((d1,d2) -> String.CASE_INSENSITIVE_ORDER.compare(d1.getName(), d2.getName()))
.forEach(desc ->
{
final ToggleButton button = new ToggleButton(desc.getName());
final Image icon = WidgetIcons.getIcon(desc.getType());
if (icon != null)
button.setGraphic(new ImageView(icon));
button.setPrefWidth(PREFERRED_WIDTH);
button.setAlignment(Pos.BASELINE_LEFT);
button.setTooltip(new Tooltip(desc.getDescription()));
button.setOnAction(event ->
{
// Remember the widget-to-create via rubberband
active_widget_type = desc;
// De-select all _other_ buttons
deselectButtons(button);
});
palette_groups.get(desc.getCategory()).getChildren().add(button);
WidgetTransfer.addDragSupport(button, editor, this, desc, icon);
});
}
/** De-select buttons
* @param keep The one button to keep (or <code>null</code>)
*/
private void deselectButtons(final ToggleButton keep)
{
// De-select all buttons
for (Pane pane : groups)
for (Node other : pane.getChildren())
if (other instanceof ToggleButton &&
other != keep)
((ToggleButton)other).setSelected(false);
}