Javafx 如何使JFoenix JFXToggleButton看起来像一个ToggleButton而不是一个开关?

Javafx 如何使JFoenix JFXToggleButton看起来像一个ToggleButton而不是一个开关?,javafx,toggle,togglebutton,jfoenix,Javafx,Toggle,Togglebutton,Jfoenix,使用该库,有没有一种方法可以使切换按钮像普通的JavaFXToggleButton一样为矩形 看起来更像一个开关,这不是我要找的。要制作类似于正常的切换按钮,您可以使用JFoenix中一个鲜为人知的控件,名为 如中所示,此控件通常包含一个图标 但是你可以在里面放任何你想要的东西为什么不是标签? 小心不要忘记包含import语句,只需手动将以下内容添加到FXML文件中§ §:请注意,SceneBuilder还不太支持非标准控件,因此,尽管您不能拖放它,但可以手动将其添加到FXML文件中 以下是我

使用该库,有没有一种方法可以使切换按钮像普通的JavaFX
ToggleButton
一样为矩形


看起来更像一个开关,这不是我要找的。

要制作类似于正常的
切换按钮
,您可以使用JFoenix中一个鲜为人知的控件,名为

如中所示,此控件通常包含一个图标

但是你可以在里面放任何你想要的东西为什么不是标签?

小心不要忘记包含
import
语句,只需手动将以下内容添加到FXML文件中§

§:请注意,SceneBuilder还不太支持非标准控件,因此,尽管您不能拖放它,但可以手动将其添加到FXML文件中


以下是我对JFXToggleNode的自定义实现

使用任何你想要的图标包

import com.jfoenix.controls.JFXToggleNode;
import de.jensd.fx.glyphs.materialicons.MaterialIcon;
import de.jensd.fx.glyphs.materialicons.MaterialIconView;
import javafx.scene.paint.Paint;

public class ShowPasswordButton extends JFXToggleNode {
    private MaterialIconView visible = new MaterialIconView(MaterialIcon.VISIBILITY, "20");
    private MaterialIconView notVisible = new MaterialIconView(MaterialIcon.VISIBILITY_OFF, "20");

    public ShowPasswordButton() {
        super();
        this.init();
        this.setGraphic(visible);
        this.selectedProperty().addListener((observable, oldValue, newValue) ->
                this.setGraphic(newValue ? notVisible : visible));
    }

    private void init() {
        visible.setFill(Paint.valueOf("#46a28d"));
        notVisible.setFill(Paint.valueOf("#46a28d"));
    }
}
.jfx-toggle-node {
    /* This is the color once toggled on. */
    -jfx-toggle-color: deepskyblue;
}
import com.jfoenix.controls.JFXToggleNode;
import de.jensd.fx.glyphs.materialicons.MaterialIcon;
import de.jensd.fx.glyphs.materialicons.MaterialIconView;
import javafx.scene.paint.Paint;

public class ShowPasswordButton extends JFXToggleNode {
    private MaterialIconView visible = new MaterialIconView(MaterialIcon.VISIBILITY, "20");
    private MaterialIconView notVisible = new MaterialIconView(MaterialIcon.VISIBILITY_OFF, "20");

    public ShowPasswordButton() {
        super();
        this.init();
        this.setGraphic(visible);
        this.selectedProperty().addListener((observable, oldValue, newValue) ->
                this.setGraphic(newValue ? notVisible : visible));
    }

    private void init() {
        visible.setFill(Paint.valueOf("#46a28d"));
        notVisible.setFill(Paint.valueOf("#46a28d"));
    }
}