JavaFX 在鼠标悬停时显示一个 Pane

标签 java javafx

我有一个 JavaFX 应用程序,我想在 Button 上的 mousehover 事件上显示一个 pane

我期望的输出类似于 Windows 任务栏预览样式,其中将鼠标悬停在 TaskBar 图标上时会在顶部显示一个预览 Pane 。 (如下图)

enter image description here

如何使用 JavaFX 实现这种效果。

最佳答案

代码非常原始,但可以获得您要求的核心功能(当然,它可以通过多种方式实现,具体取决于需求,我刚刚发布了对我来说实现最快的解决方案)

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class StickyNotesApp extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        StackPane notedPane = new StackPane();
        notedPane.setPrefSize(20, 20);
        notedPane.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
        notedPane.setStyle("-fx-background-color: purple;");

        StackPane rootPane = new StackPane(notedPane);
        rootPane.setPrefSize(400, 400);
        StackPane.setAlignment(notedPane, Pos.BOTTOM_CENTER);

        stage.setScene(new Scene(rootPane));
        stage.show();

        Stage stickyNotesStage = new Stage();
        stickyNotesStage.initOwner(stage);
        stickyNotesStage.initStyle(StageStyle.UNDECORATED);
        StackPane stickyNotesPane = new StackPane();
        stickyNotesPane.setPrefSize(200, 200);
        stickyNotesPane.setStyle("-fx-background-color: yellow;");
        stickyNotesStage.setScene(new Scene(stickyNotesPane));


        notedPane.hoverProperty().addListener((ChangeListener<Boolean>) (observable, oldValue, newValue) -> {
            if (newValue) {
                stickyNotesStage.show();
            } else {
                stickyNotesStage.hide();
            }
        });
    }
}

关于JavaFX 在鼠标悬停时显示一个 Pane ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53831807/

相关文章:

java - Hibernate Session 空指针异常

java - Gradle项目与Eclipse项目?

Java FX 橡皮筋调整大小错误

java - 如何打开 PDF 文件

java - NumberAxis.getDisplayPosition(...) 返回 0

JavaFX 如何从 TableView 中获取一列的所有值?

java - 如何在 Java 中对文件中的数据进行排序?

java - Android - 奇怪的 EscapeUtil.unescapeString 崩溃

java - 如何在 Java NIO 中配置 socks 代理

java - XSD java 中的正则表达式