6

我想创建一个像上面一样的开关按钮在此处输入图像描述 我是一个 swt 开发人员,我曾经在其中获取这个小部件Switchbutton。我可以在 javafx 中有类似的东西吗

4

3 回答 3

14

第一个倾向是扩展 JavaFXLabel并添加一个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; }
}
于 2013-07-05T17:38:11.390 回答
1

控制 FX 项目提供了一个您想要的开关按钮。

于 2018-03-05T16:11:40.883 回答
1

这不能通过绑定在一起的两个切换按钮(bind())来完成,每个按钮都有自己的 CSS 样式吗?实际上,CSS 似乎是正确处理的棘手(但可行)部分。

然后,您只需让您的应用程序聆听实际执行您想要的两个切换按钮吗?

于 2018-02-16T00:43:00.427 回答