gpt4 book ai didi

JavaFX 更改选项卡中文本的字体颜色

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:39:17 30 4
gpt4 key购买 nike

我想动态更改 TabPane 标签标签中文本的颜色。

在 SceneBuilder 中,我为选项卡指定了一个名称 randomTab。

在我的代码中,我有以下内容:

    if (randomEnabled)
randomTab.setStyle("-fx-color:Green;");
else
randomTab.setStyle("-fx-color:Black;");

但是,这不会改变文本的颜色,它会改变选项卡标签的背景颜色。

我试过“-fx-text-fill:Green”和“-fx-foreground-color:Green”,但都没有任何效果。

最佳答案

默认情况下,选项卡标题内的标签使用默认样式表 modena.css 中定义的“查找颜色”-fx-text-base-color。因此,一种快速而肮脏的方法就是覆盖该颜色定义:

randomTab.setStyle("-fx-text-base-color: green;");

此方法的问题在于,选项卡中使用 -fx-text-base-color 作为其文本填充的任何其他内容(即不在选项卡标题中)也会更改文本颜色。大多数控件实际上使用 -fx-text-background-color 作为文本(前景!)颜色,因此您可以使用这种简单的方法。 (感谢 jewelsea,他的评论使我找到了这种方法的正确版本。)

可能更可靠的方法是为选项卡中的文本填充定义您自己的“查找颜色”,然后在代码中更改特定选项卡的值。

在您的外部 CSS 文件中,添加

.root {
-tab-text-color: -fx-text-base-color ;
}

.tab-label {
-fx-text-fill: -tab-text-color ;
}

现在要更改特定选项卡的 -tab-text-color 的值,请执行

randomTab.setStyle("-tab-text-color: green;");

这是一个 SSCCE:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TabStyleTest extends Application {

@Override
public void start(Stage primaryStage) {
TabPane tabPane = new TabPane();
Tab tab1 = new Tab("Tab 1");
tab1.setContent(new StackPane(new Label("Tab 1")));
tab1.setStyle("-tab-text-color: green;");
Tab tab2 = new Tab("Tab 2");
tab2.setContent(new StackPane(new Label("Tab 2")));
tabPane.getTabs().addAll(tab1, tab2);
Scene scene = new Scene(tabPane, 600, 600) ;
scene.getStylesheets().add("style.css");
primaryStage.setScene(scene);
primaryStage.show();
}

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

style.css 在哪里

.root {
-tab-text-color: -fx-text-base-color ;
}

.tab-label {
-fx-text-fill: -tab-text-color ;
}

给予

enter image description here

关于JavaFX 更改选项卡中文本的字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46354731/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com