Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX更改选项卡中文本的字体颜色_Java_Css_Javafx - Fatal编程技术网

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

JavaFX更改选项卡中文本的字体颜色,java,css,javafx,Java,Css,Javafx,我想动态更改选项卡窗格选项卡标签中文本的颜色 在SceneBuilder中,我为选项卡命名为randomTab 在我的代码中,我有以下内容: if (randomEnabled) randomTab.setStyle("-fx-color:Green;"); else randomTab.setStyle("-fx-color:Black;"); 但是,这不会更改文本的颜色,而是更改选项卡标签背景的颜色 我尝试了“-fx text fill:Gr

我想动态更改选项卡窗格选项卡标签中文本的颜色

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

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

在外部CSS文件中,添加

.root{
-选项卡文字颜色:-fx文字基础颜色;
}
.标签标签{
-fx文本填充:-选项卡文本颜色;
}
现在要更改特定选项卡的
-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{
-选项卡文字颜色:-fx文字基础颜色;
}
.标签标签{
-fx文本填充:-选项卡文本颜色;
}
给予


看,您可以在CSS文件中添加

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


//白色是您的颜色,您也可以添加十六进制,白色->#ffffff

我认为他想设置前景色,而不是背景色,所以可能
randomTab.setStyle(“-fx文本基色:绿色;”),而不是
randomTab.setStyle(“-fx文本背景色:绿色;”)。请注意,这样编写代码而不是CSS中更具体的选择器将更改选项卡中所有文本的颜色(不仅仅是选项卡标签标题)。@jewelsea the(名称相当糟糕)查找颜色
-fx text background color
用于使用
-fx background
作为其
背景颜色的区域上的文本填充;i、 e.它是某些控件(包括标签)的文本前景色。请参见中的
.root
.label
部分。哦,是这样,多么令人困惑;-)@jewelsea的名字不是很直观,是不是。。。?实际上,直接在选项卡上设置
-fx文本背景色
,似乎根本不起作用;不太清楚为什么。我从答案中删除了这一部分。@skrilmps所以只是您的IDE不理解查找颜色(基本上,这是一个IDE错误,因为它受JavaFXCSS支持)。您可以忽略该警告(或向IDE的作者提交功能请求)。