更改悬停按钮的内容(JavaFX)

时间:2015-11-15 11:51:00

标签: java css javafx

我正在寻找一种在“悬停”时设置按钮文字的方法。

Logic:

if (button.isHover()){
  button.setText("blabla");
}

css解决方案或代码解决方案都可以!

1 个答案:

答案 0 :(得分:4)

您可以使用Bindings或向按钮的hoverProperty()添加一个监听器。

<强>绑定

button.textProperty().bind(
             Bindings.when(button.hoverProperty())
                     .then("Hovered")
                     .otherwise("Not Hovered"));

<强>监听

button.hoverProperty().addListener((ov, oldValue, newValue) -> {
    if (newValue) {
        button.setText("Hovered");
    } else {
        button.setText("Not Hovered");
    }
});

<强> MCVE

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
    public void start(Stage stage) {
        VBox pane = new VBox();
        pane.setAlignment(Pos.CENTER);
        Button button = new Button();
        button.textProperty().bind(
            Bindings.when(button.hoverProperty())
                    .then("Hovered")
                    .otherwise("Not Hovered"));
        pane.getChildren().addAll(button);
        Scene scene = new Scene(pane, 200, 200);
        stage.setScene(scene);
        stage.show();
    }
}