修改一些细节

This commit is contained in:
liwen
2021-04-07 11:47:32 +08:00
parent 58e9ceb89b
commit 90bc915eac
9 changed files with 374 additions and 75 deletions

View File

@@ -0,0 +1,63 @@
package com.fx.client.gui.uicomponents.basicInfo;
import com.fx.client.gui.uicomponents.basicInfo.skin.IconSwitchSkin;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.control.Skin;
/**
* @version 0.0.1
* @description:
* @className: IconSwitch
* @author: liwen
* @date: 2021/2/22 10:21
*/
public class IconSwitch extends Control {
// CSS pseudo classes
private BooleanProperty selected;
private final Label symbol;
// ******************** Constructors **************************************
public IconSwitch() {
getStyleClass().addAll("icon-switch");
symbol = new Label();
symbol.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
}
// ******************** Methods *******************************************
public final boolean isSelected() {
return null == selected ? false : selected.get();
}
public final void setSelected(final boolean ON) {
selectedProperty().set(ON);
}
public final BooleanProperty selectedProperty() {
if (null == selected) {
selected = new SimpleBooleanProperty();
}
return selected;
}
// ******************** Style related *************************************
@Override
protected Skin createDefaultSkin() {
return new IconSwitchSkin(this);
}
@Override
public String getUserAgentStylesheet() {
return getClass().getResource("/css/iconswitch.css").toExternalForm();
}
public Label getSymbol() {
return symbol;
}
}

View File

@@ -0,0 +1,197 @@
package com.fx.client.gui.uicomponents.basicInfo.skin;
import com.fx.client.gui.uicomponents.basicInfo.IconSwitch;
import com.jfoenix.svg.SVGGlyph;
import javafx.animation.TranslateTransition;
import javafx.geometry.Pos;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Label;
import javafx.scene.control.SkinBase;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Rectangle;
import javafx.util.Duration;
/**
* @version 0.0.1
* @description:
* @className: IconSwitch
* @author: liwen
* @date: 2021/2/22 10:21
*/
public class IconSwitchSkin extends SkinBase<IconSwitch> {
private static final double PREFERRED_WIDTH = 80;
private static final double PREFERRED_HEIGHT = 32;
private static final double MINIMUM_WIDTH = 20;
private static final double MINIMUM_HEIGHT = 8;
private static final double MAXIMUM_WIDTH = 1024;
private static final double MAXIMUM_HEIGHT = 1024;
private double size;
private double aspectRatio;
private double width;
private double height;
private Pane pane;
private Rectangle background;
private SVGGlyph symbol;
private Label thumb;
private TranslateTransition moveToDeselected;
private TranslateTransition moveToSelected;
// ******************** Constructors **************************************
public IconSwitchSkin(final IconSwitch CONTROL) {
super(CONTROL);
init();
initGraphics();
registerListeners();
resize();
}
// ******************** Initialization ************************************
private void init() {
if (Double.compare(getSkinnable().getPrefWidth(), 0.0) <= 0 || Double.compare(getSkinnable().getPrefHeight(), 0.0) <= 0 ||
Double.compare(getSkinnable().getWidth(), 0.0) <= 0 || Double.compare(getSkinnable().getHeight(), 0.0) <= 0) {
if (getSkinnable().getPrefWidth() > 0 && getSkinnable().getPrefHeight() > 0) {
getSkinnable().setPrefSize(getSkinnable().getPrefWidth(), getSkinnable().getPrefHeight());
} else {
getSkinnable().setPrefSize(PREFERRED_WIDTH, PREFERRED_HEIGHT);
}
}
if (Double.compare(getSkinnable().getMinWidth(), 0.0) <= 0 || Double.compare(getSkinnable().getMinHeight(), 0.0) <= 0) {
getSkinnable().setMinSize(MINIMUM_WIDTH, MINIMUM_HEIGHT);
}
if (Double.compare(getSkinnable().getMaxWidth(), 0.0) <= 0 || Double.compare(getSkinnable().getMaxHeight(), 0.0) <= 0) {
getSkinnable().setMaxSize(MAXIMUM_WIDTH, MAXIMUM_HEIGHT);
}
if (getSkinnable().getPrefWidth() != PREFERRED_WIDTH || getSkinnable().getPrefHeight() != PREFERRED_HEIGHT) {
aspectRatio = getSkinnable().getPrefHeight() / getSkinnable().getPrefWidth();
}
}
private void initGraphics() {
background = new Rectangle();
background.getStyleClass().setAll("background");
symbol = new SVGGlyph("");
symbol.setSize(20, 20);
symbol.setId("symbol-a");
thumb = new Label("");
thumb.setGraphic(symbol);
thumb.setAlignment(Pos.CENTER);
thumb.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
thumb.getStyleClass().setAll("thumb-a");
thumb.setMouseTransparent(true);
pane = new Pane(background, thumb);
pane.getStyleClass().setAll("icon-switch");
moveToDeselected = new TranslateTransition(Duration.millis(180), thumb);
moveToSelected = new TranslateTransition(Duration.millis(180), thumb);
// Add all nodes
getChildren().setAll(pane);
}
private void registerListeners() {
getSkinnable().widthProperty().addListener(observable -> handleControlPropertyChanged("RESIZE"));
getSkinnable().heightProperty().addListener(observable -> handleControlPropertyChanged("RESIZE"));
getSkinnable().selectedProperty().addListener(observable -> handleControlPropertyChanged("SELECTED"));
pane.setOnMouseClicked(mouseEvent -> {
getSkinnable().setSelected(!getSkinnable().isSelected());
});
}
// ******************** Methods *******************************************
protected void handleControlPropertyChanged(final String PROPERTY) {
if ("RESIZE".equals(PROPERTY)) {
resize();
} else if ("SELECTED".equals(PROPERTY)) {
thumb.getStyleClass().removeAll("thumb-a-selected" , "thumb-a");
thumb.getStyleClass().setAll(getSkinnable().isSelected() ? "thumb-a-selected" : "thumb-a");
symbol.setId(getSkinnable().isSelected() ? "symbol-a-selected" : "symbol-a");
// symbol.setStyle(getSkinnable().isSelected() ? "-fx-background-color: #191e1e;" : " -fx-background-color: #ffffff;");
if (getSkinnable().isSelected()) {
moveToSelected.play();
} else {
moveToDeselected.play();
}
}
}
@Override
protected double computeMinWidth(final double HEIGHT, double TOP_INSET, double RIGHT_INSET, double BOTTOM_INSET, double LEFT_INSET) {
return super.computeMinWidth(Math.max(MINIMUM_HEIGHT, HEIGHT - TOP_INSET - BOTTOM_INSET), TOP_INSET, RIGHT_INSET, BOTTOM_INSET, LEFT_INSET);
}
@Override
protected double computeMinHeight(final double WIDTH, double TOP_INSET, double RIGHT_INSET, double BOTTOM_INSET, double LEFT_INSET) {
return super.computeMinHeight(Math.max(MINIMUM_WIDTH, WIDTH - LEFT_INSET - RIGHT_INSET), TOP_INSET, RIGHT_INSET, BOTTOM_INSET, LEFT_INSET);
}
@Override
protected double computeMaxWidth(final double HEIGHT, double TOP_INSET, double RIGHT_INSET, double BOTTOM_INSET, double LEFT_INSET) {
return super.computeMaxWidth(Math.min(MAXIMUM_HEIGHT, HEIGHT - TOP_INSET - BOTTOM_INSET), TOP_INSET, RIGHT_INSET, BOTTOM_INSET, LEFT_INSET);
}
@Override
protected double computeMaxHeight(final double WIDTH, double TOP_INSET, double RIGHT_INSET, double BOTTOM_INSET, double LEFT_INSET) {
return super.computeMaxHeight(Math.min(MAXIMUM_WIDTH, WIDTH - LEFT_INSET - RIGHT_INSET), TOP_INSET, RIGHT_INSET, BOTTOM_INSET, LEFT_INSET);
}
@Override
protected double computePrefWidth(final double HEIGHT, double TOP_INSET, double RIGHT_INSET, double BOTTOM_INSET, double LEFT_INSET) {
double prefHeight = PREFERRED_HEIGHT;
if (HEIGHT != -1) {
prefHeight = Math.max(0, HEIGHT - TOP_INSET - BOTTOM_INSET);
}
return super.computePrefWidth(prefHeight, TOP_INSET, RIGHT_INSET, BOTTOM_INSET, LEFT_INSET);
}
@Override
protected double computePrefHeight(final double WIDTH, double TOP_INSET, double RIGHT_INSET, double BOTTOM_INSET, double LEFT_INSET) {
double prefWidth = PREFERRED_WIDTH;
if (WIDTH != -1) {
prefWidth = Math.max(0, WIDTH - LEFT_INSET - RIGHT_INSET);
}
return super.computePrefHeight(prefWidth, TOP_INSET, RIGHT_INSET, BOTTOM_INSET, LEFT_INSET);
}
// ******************** Private Methods ***********************************
private void resize() {
width = getSkinnable().getWidth();
height = getSkinnable().getHeight();
size = (width < height ? width : height)*.65;
if (width > 0 && height > 0) {
background.heightProperty().set(height * 0.35);
background.widthProperty().set(width);
background.arcHeightProperty().setValue(background.getHeight());
background.arcWidthProperty().setValue(background.getHeight());
background.setTranslateY((height - background.getHeight()) / 2.0);
thumb.setPrefSize(size, size);
thumb.setTranslateX(getSkinnable().isSelected() ? width - size : 0);
thumb.setTranslateY((height - size) / 2.0);
symbol.setSize((size * 0.65), (size * 0.65));
moveToDeselected.setFromX(width -size);
moveToDeselected.setToX(0);
moveToSelected.setFromX(0);
moveToSelected.setToX(width - size);
}
}
}

View File

@@ -2,18 +2,9 @@ package com.fx.client.gui.uicomponents.control;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.svg.SVGGlyph;
import javafx.animation.Animation;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.animation.*;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.property.*;
import javafx.geometry.BoundingBox;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
@@ -21,21 +12,10 @@ import javafx.geometry.Rectangle2D;
import javafx.scene.Cursor;
import javafx.scene.Node;
import javafx.scene.control.Tooltip;
import javafx.scene.effect.BlendMode;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.stage.Screen;
import javafx.stage.Stage;
@@ -351,7 +331,6 @@ public class LFXDecorator extends StackPane {
}
});
buttonsContainer.setMinWidth(180);
contentPlaceHolder.getStyleClass().add("lfx-decorator-content-container");
contentPlaceHolder.setMinSize(0, 0);
StackPane clippedContainer = new StackPane(node);
contentPlaceHolder.getChildren().add(clippedContainer);
@@ -361,15 +340,9 @@ public class LFXDecorator extends StackPane {
// BINDING
Rectangle clip = new Rectangle();
clip.setArcWidth(20);
clip.setArcHeight(20);
clip.widthProperty().bind(contentPane.widthProperty());
clip.heightProperty().bind(contentPane.heightProperty());
VBox.setVgrow(contentPlaceHolder, Priority.ALWAYS);
contentPane.getChildren().addAll(buttonsContainer, contentPlaceHolder);
contentPane.setClip(clip);
contentPane.getChildren().addAll(buttonsContainer,contentPlaceHolder);
contentPane.setBlendMode(BlendMode.SRC_ATOP);
this.setPadding(new Insets(3,3,3,3));
this.getChildren().addAll(contentPane);

View File

@@ -179,7 +179,7 @@ public class LoginController {
registeredPane.managedProperty().bind(registeredPane.visibleProperty());
initAnimation();
loadingImage();
// loadingImage();
initAction();
}

View File

@@ -3,6 +3,7 @@ package com.fx.client.gui.uicomponents.main;
import com.fx.client.AppStartup;
import com.fx.client.bean.MenuVoCell;
import com.fx.client.gui.feature.FeatureResourceConsumer;
import com.fx.client.gui.uicomponents.basicInfo.IconSwitch;
import com.fx.client.gui.uicomponents.home.HomeController;
import com.fx.client.gui.uicomponents.login.LoginController;
import com.fx.client.gui.uicomponents.main.components.UserInfoController;
@@ -82,9 +83,8 @@ public class MainController {
@FXML
@ActionTrigger("goHome")
private JFXButton homeButton;
@FXML
@ActionTrigger("showSkinPane")
private JFXToggleNode styleNode;
private IconSwitch styleNode;
//刷新按钮
@FXML
@EventTrigger("refresh")
@@ -127,7 +127,9 @@ public class MainController {
@PostConstruct
public void init() throws FlowException {
styleNode=new IconSwitch();
styleNode.setPrefSize(50,32);
rightHbox.getChildren().add(0,styleNode);
navigationList=new JFXListView<>();
navigationList.getStyleClass().add("navigation-list");
leftDrawer = new JFXDrawer();
@@ -147,7 +149,6 @@ public class MainController {
refreshButton.setGraphic(SVGGlyphLoader.getIcoMoonGlyph(ApplicatonStore.ICON_FONT_KEY + ".shuaxin1"));
bellButton.setGraphic(SVGGlyphLoader.getIcoMoonGlyph(ApplicatonStore.ICON_FONT_KEY + ".cc-bell-o"));
userButton.setGraphic(SVGGlyphLoader.getIcoMoonGlyph(ApplicatonStore.ICON_FONT_KEY + ".ChevronDownCircle"));
styleNode.setGraphic(SVGGlyphLoader.getIcoMoonGlyph(ApplicatonStore.ICON_FONT_KEY + ".moon-fill"));
} catch (Exception e) {
e.printStackTrace();
@@ -205,8 +206,16 @@ public class MainController {
});
drawersStack.toggle(leftDrawer);
drawersStack.setEffect(null);
styleNode.selectedProperty().bindBidirectional(ApplicatonStore.styleProperty());
ApplicatonStore.styleProperty().bindBidirectional( styleNode.selectedProperty());
styleNode.selectedProperty().addListener((observable, oldValue, newValue) -> {
try {
showSkinPane();
} catch (VetoException e) {
e.printStackTrace();
} catch (FlowException e) {
e.printStackTrace();
}
});
featureResourceConsumer.consumeResource(this);
navigationList.setCellFactory(listView -> new JFXListCell<Object>() {
@@ -412,19 +421,10 @@ public class MainController {
String style2 = AppStartup.class.getResource("/css/app-dark.css").toExternalForm();
if (styleNode.isSelected()) {
try {
styleNode.setGraphic(SVGGlyphLoader.getIcoMoonGlyph(ApplicatonStore.ICON_FONT_KEY + ".taiyang"));
} catch (Exception e) {
e.printStackTrace();
}
styleNode.getScene().getStylesheets().removeAll(style1);
styleNode.getScene().getStylesheets().addAll(style2);
} else {
try {
styleNode.setGraphic(SVGGlyphLoader.getIcoMoonGlyph(ApplicatonStore.ICON_FONT_KEY + ".moon-fill"));
} catch (Exception e) {
e.printStackTrace();
}
styleNode.getScene().getStylesheets().removeAll(style2);
styleNode.getScene().getStylesheets().addAll(style1);

View File

@@ -222,7 +222,8 @@
.lfx-decorator {
-fx-decorator-color: -fx-main-base;
-fx-background-color: transparent;
-fx-background-color: -fx-main-base;
-fx-background-radius: 11;
}

View File

@@ -219,8 +219,8 @@
.lfx-decorator {
-fx-decorator-color: -fx-main-base;
-fx-background-color: transparent;
-fx-background-color: -fx-main-base;
-fx-background-radius: 11;
}
.lfx-decorator .lfx-decorator-buttons-container {

View File

@@ -0,0 +1,52 @@
/*
* Copyright (c) 2013 by Gerrit Grunwald
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/************************************************************
* ICON-SWITCH class *
************************************************************/
.icon-switch {
-fx-skin: "com.fx.client.gui.uicomponents.basicInfo.skin.IconSwitchSkin";
-switch-color: white;
-thumb-color: white;
}
.icon-switch > .background {
-fx-fill: #41464b;
}
.icon-switch > .thumb-a {
-fx-background-color: #909191;
-fx-background-radius: 1024;
}
.icon-switch > .thumb-a-selected {
-fx-background-color: #9b9b9b;
-fx-background-radius: 1024;
}
.icon-switch .thumb-a .jfx-svg-glyph {
-fx-shape: "M511.951 74.082c16.284 0 29.529-13.001 29.904-29.18l0.008-0.706v-81.31c0-16.506-13.392-29.886-29.912-29.886-16.283 0-29.528 13-29.903 29.18l-0.008 0.706v81.31c0 16.505 13.392 29.886 29.911 29.886z m-219.283 93.56c11.514-11.505 11.679-30.056 0.493-41.761l-0.493-0.505-57.545-57.495c-11.68-11.67-30.62-11.67-42.301 0-11.515 11.505-11.68 30.055-0.494 41.76l0.494 0.505 57.544 57.495c11.681 11.671 30.62 11.671 42.302 0z m484.965 0.492l0.505-0.493 57.545-57.495c11.681-11.67 11.681-30.593 0-42.265-11.515-11.504-30.08-11.669-41.797-0.493l-0.505 0.493-57.544 57.495c-11.682 11.671-11.682 30.594 0 42.265 11.514 11.505 30.08 11.669 41.796 0.493zM511.951 645.787c143.596 0 260.003-116.306 260.003-259.778 0-143.471-116.407-259.778-260.003-259.778-143.595 0-260.003 116.307-260.003 259.778 0 143.472 116.408 259.778 260.003 259.778z m0-59.772c-110.556 0-200.179-89.545-200.179-200.006 0-110.46 89.623-200.006 200.18-200.006 110.555 0 200.179 89.546 200.179 200.006s-89.624 200.006-200.18 200.006z m-336.694-167.07c16.505 0 29.886-13.391 29.886-29.911 0-16.284-13.001-29.529-29.18-29.904l-0.706-0.008h-81.31c-16.506 0-29.886 13.392-29.886 29.912 0 16.284 13 29.528 29.18 29.904l0.706 0.008h81.31z m747.796 0c16.506 0 29.886-13.391 29.886-29.911 0-16.284-13-29.529-29.18-29.904l-0.706-0.008h-81.31c-16.505 0-29.886 13.392-29.886 29.912 0 16.284 13.001 29.528 29.18 29.904l0.706 0.008h81.31zM234.618 708.382l0.505-0.493 57.545-57.495c11.681-11.671 11.681-30.594 0-42.265-11.515-11.505-30.08-11.67-41.797-0.493l-0.505 0.493-57.544 57.494c-11.682 11.672-11.682 30.594 0 42.265 11.514 11.505 30.08 11.67 41.796 0.494z m596.463-0.493c11.515-11.505 11.679-30.055 0.494-41.76l-0.494-0.506-57.544-57.494c-11.682-11.671-30.62-11.671-42.302 0-11.515 11.504-11.679 30.055-0.494 41.76l0.494 0.505 57.544 57.495c11.682 11.67 30.62 11.67 42.302 0zM511.951 832c16.284 0 29.529-13 29.904-29.18l0.008-0.706v-81.31c0-16.505-13.392-29.886-29.912-29.886-16.283 0-29.528 13.001-29.903 29.18l-0.008 0.706v81.31C482.04 818.62 495.432 832 511.95 832z";
}
.icon-switch .thumb-a-selected .jfx-svg-glyph {
-fx-shape: "M485.546667 809.856a320 320 0 1 1 452.266666-452.266667C924.245333 134.229333 738.816-42.666667 512.042667-42.666667 276.352-42.666667 85.333333 148.352 85.333333 384c0 226.773333 176.896 412.202667 400.213334 425.856z";
}
.icon-switch:disabled {
-fx-opacity: 0.4;
}

View File

@@ -22,70 +22,83 @@
<Pane fx:id="backgroundPicturePane" prefHeight="200.0" prefWidth="200.0" styleClass="backgroundPicturePane">
<StackPane.margin>
<Insets />
<Insets/>
</StackPane.margin>
</Pane>
<Pane fx:id="backgroundPane" prefHeight="200.0" prefWidth="200.0" styleClass="backgroundPane">
<StackPane.margin>
<Insets />
<Insets/>
</StackPane.margin>
</Pane>
<VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="400.0" prefWidth="600.0">
<children>
<HBox alignment="CENTER_LEFT" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" prefHeight="50.0" spacing="5.0" styleClass="tool-pane" VBox.vgrow="ALWAYS">
<HBox alignment="CENTER_LEFT" maxHeight="-Infinity" maxWidth="1.7976931348623157E308"
minHeight="-Infinity" prefHeight="50.0" spacing="5.0" styleClass="tool-pane" VBox.vgrow="ALWAYS">
<children>
<JFXHamburger fx:id="navigationButton" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="40.0" prefWidth="40.0">
<JFXHamburger fx:id="navigationButton" maxHeight="-Infinity" maxWidth="-Infinity"
prefHeight="40.0" prefWidth="40.0">
<animation>
<HamburgerSlideCloseTransition />
<HamburgerSlideCloseTransition/>
</animation>
<padding>
<Insets left="5.0" />
<Insets left="5.0"/>
</padding>
</JFXHamburger>
<JFXButton fx:id="homeButton" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="40.0" prefWidth="40.0" styleClass="tool-bar-button" />
<JFXButton fx:id="refreshButton" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="40.0" prefWidth="40.0" styleClass="tool-bar-button" />
<JFXButton fx:id="homeButton" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="40.0"
prefWidth="40.0" styleClass="tool-bar-button"/>
<JFXButton fx:id="refreshButton" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="40.0"
prefWidth="40.0" styleClass="tool-bar-button"/>
<JFXDatePicker fx:id="datePicker" editable="false" maxWidth="150">
<HBox.margin>
<Insets />
<Insets/>
</HBox.margin>
<padding>
<Insets bottom="7.0" />
<Insets bottom="7.0"/>
</padding>
</JFXDatePicker>
<HBox alignment="CENTER_RIGHT" HBox.hgrow="ALWAYS">
<JFXToggleNode fx:id="styleNode" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="40.0" prefWidth="40.0" styleClass="tool-bar-toggle" />
<JFXBadge maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="40.0" prefWidth="45.0" styleClass="icons-badge" text="8">
<HBox fx:id="rightHbox" alignment="CENTER_RIGHT" HBox.hgrow="ALWAYS">
<JFXBadge maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="40.0" prefWidth="45.0"
styleClass="icons-badge" text="8">
<control>
<StackPane style="-fx-padding: 5;">
<JFXButton fx:id="bellButton" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="40.0" prefWidth="40.0" styleClass="tool-bar-button" text="1">
<JFXButton fx:id="bellButton" contentDisplay="GRAPHIC_ONLY"
maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="40.0"
prefWidth="40.0" styleClass="tool-bar-button" text="1">
<StackPane.margin>
<Insets />
<Insets/>
</StackPane.margin>
</JFXButton>
</StackPane>
</control>
</JFXBadge>
<VBox alignment="CENTER">
<Label fx:id="userLabel" maxWidth="1.7976931348623157E308" style="-fx-font-size: 16;-fx-font-weight: bold" text="李稳" VBox.vgrow="ALWAYS" />
<Label fx:id="roleLabel" maxWidth="1.7976931348623157E308" style="-fx-font-size: 10;" text="管理员" VBox.vgrow="ALWAYS" />
<Label fx:id="userLabel" maxWidth="1.7976931348623157E308"
style="-fx-font-size: 16;-fx-font-weight: bold" text="李稳" VBox.vgrow="ALWAYS"/>
<Label fx:id="roleLabel" maxWidth="1.7976931348623157E308" style="-fx-font-size: 10;"
text="管理员" VBox.vgrow="ALWAYS"/>
<padding>
<Insets left="7.0" />
<Insets left="7.0"/>
</padding>
</VBox>
<JFXButton fx:id="userButton" contentDisplay="GRAPHIC_ONLY" maxHeight="20.0" maxWidth="20.0" minHeight="20.0" minWidth="20.0" prefHeight="20.0" prefWidth="20.0" styleClass="tool-bar-button" text="user" textFill="WHITE" />
<JFXButton fx:id="userButton" contentDisplay="GRAPHIC_ONLY" maxHeight="20.0" maxWidth="20.0"
minHeight="20.0" minWidth="20.0" prefHeight="20.0" prefWidth="20.0"
styleClass="tool-bar-button" text="user" textFill="WHITE"/>
<padding>
<Insets right="5.0" />
<Insets right="5.0"/>
</padding>
</HBox>
</children>
</HBox>
<JFXDrawersStack fx:id="drawersStack" VBox.vgrow="ALWAYS" >
<JFXDrawersStack fx:id="drawersStack" VBox.vgrow="ALWAYS">
<content>
<JFXTabPane fx:id="tabPane" />
<JFXTabPane fx:id="tabPane"/>
</content>
</JFXDrawersStack>
</children>