Как создать кнопку переключения в javafx?
Я хочу создать кнопку переключателя, как указано выше Я разработчик swt, где я использовал, чтобы получить этот виджет Switchbutton. Могу ли я иметь что-то подобное в javafx
3 ответов
первый наклон заключается в расширении JavaFX Label
и добавить Button
как графический и SimpleBooleanProperty
для прослушивания. Установите ActionEvent
обработчик на кнопке, которая переключает Label
выравнивание текста, стиля и графического содержимого. Код ниже поможет вам начать работу, и вы можете играть со стилем и ограничением.
package switchbutton;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Label;
public class SwitchButton extends Label
{
private SimpleBooleanProperty switchedOn = new SimpleBooleanProperty(true);
public SwitchButton()
{
Button switchBtn = new Button();
switchBtn.setPrefWidth(40);
switchBtn.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent t)
{
switchedOn.set(!switchedOn.get());
}
});
setGraphic(switchBtn);
switchedOn.addListener(new ChangeListener<Boolean>()
{
@Override
public void changed(ObservableValue<? extends Boolean> ov,
Boolean t, Boolean t1)
{
if (t1)
{
setText("ON");
setStyle("-fx-background-color: green;-fx-text-fill:white;");
setContentDisplay(ContentDisplay.RIGHT);
}
else
{
setText("OFF");
setStyle("-fx-background-color: grey;-fx-text-fill:black;");
setContentDisplay(ContentDisplay.LEFT);
}
}
});
switchedOn.set(false);
}
public SimpleBooleanProperty switchOnProperty() { return switchedOn; }
}
не может ли это быть сделано с двумя кнопками переключения, которые связаны вместе (bind ()), где каждая кнопка получает свой собственный стиль CSS? На самом деле кажется, что CSS будет сложной (но выполнимо) частью, чтобы получить право.
то ты просто не слушай тумблера из двух, что на самом деле делает то, что вы хотите?