样式相同的弹出窗口

时间:2018-07-25 07:59:11

标签: javafx styles

我想在JavaFX中创建三个弹出窗口。这些窗口几乎相同,但是样式不同。例如,用户删除窗口具有黑色标题字段,绿色用于激活用户,红色用于阻止。我只想在FXML中创建一个这样的窗口,然后将样式作为参数传递。我该怎么做,甚至有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个自定义对话框窗口,也可以使用javafx本机对话框窗口 ---------------这里我创建了一个自定义对话框窗口,并根据需要动态更改颜色和图标

------- FXML -------------------

<?xml version="1.0" encoding="UTF-8"?>

<?import com.jfoenix.controls.JFXButton?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>

<GridPane xmlns:fx="http://javafx.com/fxml/1" style="-fx-border-color: red;" xmlns="http://javafx.com/javafx/8.0.141">
   <columnConstraints>
      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
   </columnConstraints>
   <rowConstraints>
      <RowConstraints maxHeight="194.0" minHeight="10.0" prefHeight="117.0" vgrow="SOMETIMES" />
      <RowConstraints maxHeight="113.0" minHeight="10.0" prefHeight="113.0" vgrow="SOMETIMES" />
   </rowConstraints>
   <children>
      <AnchorPane prefHeight="113.0" prefWidth="400.0" style="-fx-background-color: e34c5e;">
         <children>
            <ImageView fitHeight="82.0" fitWidth="104.0" layoutX="153.0" layoutY="18.0" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="17.0" AnchorPane.leftAnchor="153.0" AnchorPane.rightAnchor="165.0" AnchorPane.topAnchor="18.0">
               <image>
                  <Image url="@../Images/eror_icon.png" />
               </image>
            </ImageView>
         </children></AnchorPane>
      <AnchorPane layoutX="10.0" layoutY="10.0" prefHeight="129.0" prefWidth="400.0" style="-fx-background-color: white;" GridPane.rowIndex="1">
         <children>
            <GridPane layoutX="84.0" layoutY="-5.0" prefHeight="99.0" prefWidth="400.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
              <columnConstraints>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
              </columnConstraints>
              <rowConstraints>
                <RowConstraints maxHeight="43.0" minHeight="10.0" prefHeight="39.0" vgrow="SOMETIMES" />
                <RowConstraints maxHeight="27.0" minHeight="10.0" prefHeight="22.0" vgrow="SOMETIMES" />
                <RowConstraints maxHeight="36.0" minHeight="10.0" prefHeight="36.0" vgrow="SOMETIMES" />
              </rowConstraints>
               <children>
                  <Label alignment="CENTER" contentDisplay="CENTER" prefHeight="50.0" prefWidth="401.0" text="Item Not Selected !">
                     <font>
                        <Font name="System Bold" size="19.0" />
                     </font>
                  </Label>
                  <Label alignment="CENTER" layoutX="10.0" layoutY="43.0" prefHeight="50.0" prefWidth="401.0" text="Item to Purchase Is Not Selected..Select an Item" GridPane.rowIndex="1" />
                  <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" GridPane.rowIndex="2">
                     <children>
                        <JFXButton fx:id="btnOk" buttonType="RAISED" onMouseClicked="#btnOkClicked" prefHeight="32.0" prefWidth="121.0" style="-fx-background-color: e34c5e; -fx-background-radius: 80;" text="Ok" textFill="WHITE">
                           <HBox.margin>
                              <Insets bottom="2.0" top="2.0" />
                           </HBox.margin>
                           <font>
                              <Font name="System Bold" size="15.0" />
                           </font>
                        </JFXButton>
                     </children>
                  </HBox>
               </children>
            </GridPane>
         </children>
      </AnchorPane>
   </children>
</GridPane>

--------------------控制器--------

package Controllers;

import javafx.scene.control.Dialog;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;


public class CustomAlertDialogBox  {
    private Dialog currentDialog;

    public CustomAlertDialogBox(Dialog dialog) {

        this.currentDialog = dialog;
    }

    public void btnOkClicked(MouseEvent mouseEvent) {
        Stage stage = (Stage) currentDialog.getDialogPane().getScene().getWindow();
        stage.close();
    }

}

选中此复选框以显示本机对话框 http://code.makery.ch/blog/javafx-dialogs-official/