Как сделать JFoenix JFXToggleButton похожим на ToggleButton, а не на переключатель?

Используя библиотеку JFoenix, есть ли способ иметь кнопку-переключатель, которая представляет собой прямоугольник, как обычный JavaFX ToggleButton?

Кнопка JFXToggleButton больше похожа на переключатель — и это не то, что я ищу за.


person Brad Turek    schedule 12.04.2018    source источник


Ответы (2)


Чтобы сделать что-то похожее на обычный ToggleButon, вы можете использовать менее известный элемент управления в JFoenix под названием JFXToggleNode.

Как видно из демонстрации JFoenix, этот элемент управления часто содержит значок.

Переключить значки

Но вы можете поместить туда все, что захотите. Почему не ярлык?

Стараясь не забыть включить операторы import, просто добавьте следующее в файл FXML вручную§.

<?import com.jfoenix.controls.JFXToggleNode?>
<?import javafx.scene.control.Label?>

...

<JFXToggleNode>
    <Label text="Boton Azul" />
</JFXToggleNode>

и добавьте это правило в свою таблицу стилей:

.jfx-toggle-node {
    /* This is the color once toggled on. */
    -jfx-toggle-color: deepskyblue;
}

§: обратите внимание, что SceneBuilder не очень хорошо поддерживает нестандартные элементы управления, поэтому, хотя вы не можете перетаскивать его, вы можете добавьте его вручную в файл FXML отлично.

JFXToggleNode Animation

person Brad Turek    schedule 12.04.2018

Вот моя собственная реализация 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"));
    }
}
person JeSa    schedule 30.01.2020