Используя библиотеку JFoenix, есть ли способ иметь кнопку-переключатель, которая представляет собой прямоугольник, как обычный JavaFX ToggleButton
?
Кнопка JFXToggleButton
больше похожа на переключатель — и это не то, что я ищу за.
Используя библиотеку JFoenix, есть ли способ иметь кнопку-переключатель, которая представляет собой прямоугольник, как обычный JavaFX ToggleButton
?
Кнопка JFXToggleButton
больше похожа на переключатель — и это не то, что я ищу за.
Чтобы сделать что-то похожее на обычный 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 не очень хорошо поддерживает нестандартные элементы управления, поэтому, хотя вы не можете перетаскивать его, вы можете em> добавьте его вручную в файл 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"));
}
}