JavaFX - 如何更改选定的未聚焦行的 TableView 颜色?

2024-01-10

无论我做什么 - 该行的颜色保持不变并且呈灰色。这些更改仅在 TableView 获得焦点时才有效。

我尝试了在网上找到的所有其他建议,例如另一个线程的解决方案:

.table-row-cell:selected { -fx-background-color: red; }

当焦点不集中时,似乎没有什么起作用并影响行。


Problem

您想要更改 TableView 的聚焦和未聚焦状态的选择栏的颜色

Solution

有一个-fx-selection-bar and -fx-selection-bar-non-focused定义在摩德纳.css(默认 JavaFX 样式表)。它们都位于一个名为Theming。因此,它们应该成为多变的“全球”主题的一部分。如果你为整个应用程序更改它们,它不仅会改变 TableView 为选择着色的方式,甚至还会改变菜单、列表等。所以你应该意识到这一点。

但从上面的评论应该可以清楚地看出,您尝试通过在 TableView 实例上调用方法 .setStyle() 来添加样式。如果这样做,通过这两个属性更改颜色将导致仅更改 TableView 选择栏的颜色。

An 最小、完整且可验证的示例 https://stackoverflow.com/help/mcve可能类似于以下代码:

TableRowColor.java

 package tablerowcolor;

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TableRowColor extends Application {

  @Override
  public void start(Stage primaryStage) {
    ObservableList<Person> persons
            = FXCollections.observableArrayList(
                    new Person("Sir", "Tobey"),
                    new Person("Admiral", "von Schneider"),
                    new Person("Mr.", "Pommeroy"),
                    new Person("Mr.", "Winterbottom"));

    TableView<Person> tableView = new TableView<>(persons);
    tableView.
            setStyle("-fx-selection-bar: red; -fx-selection-bar-non-focused: salmon;");

    TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
    firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
    TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
    lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));

    tableView.getSelectionModel().clearAndSelect(0);
    tableView.getColumns().setAll(firstNameCol, lastNameCol);

    Button btn = new Button();
    btn.setText("Focus me");

    VBox root = new VBox();
    root.getChildren().addAll(tableView, btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Selection Row Color");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    launch(args);
  }

  public class Person {

    private final StringProperty firstName
            = new SimpleStringProperty(this, "firstName");

    public void setFirstName(String value) {
      firstNameProperty().set(value);
    }

    public String getFirstName() {
      return firstNameProperty().get();
    }

    public StringProperty firstNameProperty() {
      return firstName;
    }

    private final StringProperty lastName
            = new SimpleStringProperty(this, "lastName");

    ;

    public void setLastName(String value) {
      lastNameProperty().set(value);
    }

    public String getLastName() {
      return lastNameProperty().get();
    }

    public StringProperty lastNameProperty() {
      return lastName;
    }

    public Person(String firstName, String lastName) {
      this.firstName.set(firstName);
      this.lastName.set(lastName);
    }
  }
}

Netbeans 项目结构

Netbeans 中的 JavaFX 应用程序项目应如下所示:

工作申请

工作应用程序将如下所示:

在场景生成器中设置样式

在场景生成器中,您可以通过打开检查器来为 TableView 设置相同的样式,而不是 TableView 的属性并将以下内容添加到样式框中:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX - 如何更改选定的未聚焦行的 TableView 颜色? 的相关文章

随机推荐

  • 是什么原因导致“java.lang.InknownClassChangeError:vtable存根”?

    是什么原因导致 java lang InknownClassChangeError vtable存根 在我们的应用程序中 我们很少看到此错误随机弹出 到目前为止只出现两次 而且我们运行了很多次 即使重新启动应用程序 使用相同的 jvm ja
  • Flask 将变量从一个函数传递到另一个函数

    正如你所看到的代码 我想传递变量q从函数home 进入功能search app route methods GET POST def home result Mylist query all return render template i
  • DIM 在 Visual Basic 和 BASIC 中代表什么?

    什么是Dim在 Visual Basic 中代表什么 Dim 最初 在 BASIC 中 代表 Dimension 因为它用于定义数组的维度 BASIC 的最初实现是达特茅斯基础 https en wikipedia org wiki Dar
  • AWS CLI 2 无法使用 CLI 更新服务

    我在 ecs 上有一个集群 一切正常 当我使用 aws cli v 1 时 我可以使用如下命令更新我的服务aws ecs update service cluster cluster name service service name ta
  • 执行 io 时 akka jvm 线程与 os 线程

    我在该网站上进行了一些搜索 以寻求帮助理解这一点 但没有找到任何非常清晰的内容 所以我想我应该发布我的用例 看看是否有人可以提供一些线索 我有一个关于在 akka 中用于 io 操作时 jvm 线程与操作系统线程的扩展的问题 来自 akka
  • 适用于英语以外语言的 POS [重复]

    这个问题在这里已经有答案了 我对 nltk 很陌生 这使我可以根据句子的词性来标记句子 但是对于其他语言执行此操作涉及哪些步骤 import nltk sentence I m not sure tokens nltk word token
  • 在私有 github 文件夹中获取 R 文件

    我希望在私人 github 文件夹中获取一些 R 脚本 并通过 R 使其在某些环境中可用 当使用公共 github 文件夹时 这两个命令都可以完成这项工作 get URL 和 source url 来自 devtools 然而 当文件夹是私
  • NSTimer改变图像iPhone编程

    如何在iPhone编程中使用NSTimer定期更改图像 我创建一个用于加载图像的图像视图 我想在 imageview 中显示图像并使用 NSTimer 定期更改图像 我不使用 NSTimer 而是使用一组图像并对它们进行动画处理 查看文档从
  • 在cordova android项目中定义有关buildType的包名称

    如何定义关于我的 buildType 的正确包名称 我有这个命令行来构建 cordova run android device buildType beta 我有这个钩子 在准备之后 它从命令行设置 buildType fs appendF
  • 网格图的常见图例[重复]

    这个问题在这里已经有答案了 在这个可重现的示例网格图中 3 个图有 3 种填充颜色 z 显示为蓝色 col 但在第四个图中只有 1 个 col 因此 z 显示为红色 我只想展示一个常见的传说 我可以做到 但我希望 z 在所有四个图中都是蓝色
  • 如何在网站登录完成之前隐藏 WebView? [本机反应]

    我正在尝试制作一个显示网站的组件WebView然后自动填写用户信息进行登录 我通过向其中注入一些 javascript 来处理自动填充部分WebView与injectedJavascipt prop 但问题是我想隐藏WebView 登录页面
  • 在 Haskell 中实现 Iota

    Iota 是一种小得可笑的 编程语言 仅使用一个组合器 我有兴趣了解它是如何工作的 但是以我熟悉的语言查看其实现会很有帮助 我找到了一个用Scheme编写的Iota编程语言的实现 不过 我在将其翻译成 Haskell 时遇到了一些麻烦 它相
  • 错误:onActivityResult 不覆盖任何内容

    我正在用 Kotlin 为 Android 编写一个语音识别应用程序 class MainActivity AppCompatActivity public override fun onCreate savedInstanceState
  • 如何在 Android 7+ 上阻止“按住后退按钮”退出“锁定任务模式”

    我正在尝试使用 锁定任务模式 如上所述https developer android com work cosu html https developer android com work cosu html 我的目标是让单个应用程序在 信
  • Google Script GetRange 与基于列中的值的过滤器并仅选择某些列

    我有一个 35 列和 300 行的数据集 我想要获取仅包含第 30 列 名称 中某些值的行的范围 要过滤数据的名称基于活动报告表中的报告文件单元格 B6 到目前为止我尝试过这个 var report SpreadsheetApp getAc
  • 如何捕获抽屉的打开和关闭抖动?

    如何捕捉抽屉打开和关闭的颤动 原则上 必须使用两个对象来实现此目的 保存 抽屉的 DrawerController 和抽屉回调 抽屉回调应该跟踪抽屉的打开和关闭 但是讨论的代码https github com flutter flutter
  • iOS 中 UITextField 中的密码验证

    我有 1UITextfield我的 iPhone 应用程序中的密码 我想通过以下验证来验证此文本字段 必须至少 10 个字符 必须至少包含 1 个小写字母 1 个大写字母 1 个数字和 1 个特殊字符 有效的特殊字符是 10 d a z A
  • 在react-admin中,如果查询字段的长度很短,如何防止发送get请求

    我正在使用react admin并尝试创建一个带有自动完成字段的过滤器 该过滤器将在我键入时进行查询 并且仅当搜索条件长度长于2时才开始发送查询 我目前正在使用shouldRenderSuggestions在我的里面Autocomplete
  • Matlab:显式指定饼图切片颜色

    我正在创建一个饼图 pie a b c d 是否可以显式更改各个切片的颜色 例如 如果我希望 a 和 b 的切片始终为绿色 c 和 d 的切片始终为蓝色 无论其大小如何 我该怎么做 在我看来 颜色图使用切片的大小进行着色 不一定是提供给饼函
  • JavaFX - 如何更改选定的未聚焦行的 TableView 颜色?

    无论我做什么 该行的颜色保持不变并且呈灰色 这些更改仅在 TableView 获得焦点时才有效 我尝试了在网上找到的所有其他建议 例如另一个线程的解决方案 table row cell selected fx background colo