我有一个简单的课程:

Test.java:

import javafx.animation.FadeTransition;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Test extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        Pane pane = new Pane();
        
        Button testButton = new Button("Test");
        testButton.setStyle("-fx-background-color: green;");

        pane.getChildren().add(testButton);
        pane.setStyle("-fx-background-color: red;");

        FadeTransition transition = new FadeTransition(Duration.millis(5000), pane);
        transition.setFromValue(1.0);
        transition.setToValue(0.0);
        transition.setCycleCount(Timeline.INDEFINITE);
        transition.setAutoReverse(true);
        transition.play();

        Scene scene = new Scene(pane, 500, 500);

        stage.setMinWidth(500);
        stage.setMinHeight(500);

        stage.setTitle("Test");
        stage.setResizable(false);

        stage.setScene(scene);
        stage.show();
    }
}

看起来是这样的:

enter image description here

然而,当它消失时,它会变成:

enter image description here

如何使淡入淡出过渡只影响红色背景而不影响绿色按钮?

所以它看起来像这样:

enter image description here

推荐答案

using stackpane

stack

您可以使用StackPane作为根,也可以同时使用:PaneButton子级的stackpane.按钮不受转换的影响,因为它不再是窗格的子级.

如果您需要不同 node 的不同对齐方式,可以使用StackPane类中的静态方法setAligment,它需要一个子 node 和位置作为参数

public class  App extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        
        Pane pane = new Pane();
        
        Button testButton = new Button("Test");
        testButton.setStyle("-fx-background-color: green;");

        StackPane stackPane = new StackPane(pane,testButton);
        stackPane.setAlignment(Pos.TOP_LEFT);
        
        pane.setStyle("-fx-background-color: red;");

        FadeTransition transition = new FadeTransition(Duration.millis(5000), pane);
        transition.setFromValue(1.0);
        transition.setToValue(0.0);
        transition.setCycleCount(Timeline.INDEFINITE);
        transition.setAutoReverse(true);
        transition.play();

        Scene scene = new Scene(stackPane, 500, 500);

        stage.setMinWidth(500);
        stage.setMinHeight(500);

        stage.setTitle("Test");
        stage.setResizable(false);

        stage.setScene(scene);
        stage.show();
    }
}

Java相关问答推荐

Select 按位运算序列

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

滚动视图&不能在alert 对话框中工作(&Q;&Q;)

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

内存中的H2修剪尾随空格

SpringBoot+Java 17@Valid未验证POJO

试着做一个2x2的魔方求解算法,我如何找到解路径(DFS)?

使用用户引入的参数生成人员数组

如何在代码中将行呈现在矩形前面?

buildDir:File!&#的getter解决方案是什么?39.被抛弃

如何在JUNIT测试中覆盖ExecutorService?

Oj算法 MatrixR032从字符串、归一化和余弦相似度计算创建

错误:未找到扩展元素在JBossEAP 7.2中安装FUSE时出错

如何生成指定范围内的11位序列号?

Java中HashSet的搜索时间与TreeSet的搜索时间

基于Java中mm/dd/yy格式的最近日期对数组列表进行排序

Java KeyListener不工作或被添加

字符串的Gzip压缩在java11和java17中给出了不同的结果

如何设置默认序列生成器分配大小

正则表达式从Java中的字符串中提取包含逗号的证书组件