如何仅为一个元素保留css样式

如何仅为一个元素保留css样式,css,listview,javafx-8,Css,Listview,Javafx 8,我的应用程序中有以下CSS样式: .list-cell { -fx-background-color: null; -fx-font-size: 24px; -fx-text-fill: linear-gradient( from 0.0% 0.0% to 0.0% 50.0%, reflect, rgba(255,0,0,0.28) 0.0, rgba(102,243,255,0.58) 50.0, rgba(179,179,179,0.45) 70.0, rgba(1

我的应用程序中有以下CSS样式:

.list-cell {
    -fx-background-color: null;
    -fx-font-size: 24px;
    -fx-text-fill: linear-gradient( from 0.0% 0.0% to 0.0% 50.0%, reflect, rgba(255,0,0,0.28) 0.0, rgba(102,243,255,0.58) 50.0, rgba(179,179,179,0.45) 70.0, rgba(179,179,179,0.45) 100.0);
}
.list-cell:hover {
    -fx-text-fill:linear-gradient( from 0.0% 0.0% to 100.0% 100.0%, reflect, rgb(255,255,255) 0.0, rgb(255,255,77) 100.0);
}
我将其应用到我的计划中:

scene.getStylesheets().add(getClass().getResource("/com/root/tomaszm/Design.css").toExternalForm());
我只想将此样式用于一个ListView节点,而不用于任何其他节点。我有一个新的组合框继承这种风格的问题

我知道这可能是最基本的东西,但我还不熟悉CSS,只是在寻找快速修复

编辑:

应用程序类

scene.getStylesheets().add(getClass().getResource("/com/root/tomaszm/Design.css").toExternalForm());
控制器类

listView.getStyleClass().add("mainList");

您必须将样式类添加到ListView中

   listView.getStyleClass().add("mylist");
你的css

 #mylist   .list-cell {
        -fx-background-color: null;
        -fx-font-size: 24px;
        -fx-text-fill: linear-gradient( from 0.0% 0.0% to 0.0% 50.0%, reflect, rgba(255,0,0,0.28) 0.0, rgba(102,243,255,0.58) 50.0, rgba(179,179,179,0.45) 70.0, rgba(179,179,179,0.45) 100.0);
    }
  #mylist   .list-cell:hover {
        -fx-text-fill:linear-gradient( from 0.0% 0.0% to 100.0% 100.0%, reflect, rgb(255,255,255) 0.0, rgb(255,255,77) 100.0);
    }

您可以阅读文档以了解更多解释

您编写css的方式,您需要将
css id
设置到您的节点,而不是控制器中的
styleclass

背景

节点可以同时具有这两个属性

  • styleclass(由
    .styleclass{…}
    表示)
  • css id(由
    #id{…}
    表示)
从JavaDocs:

Node类包含id、styleClass和 用于从CSS设置此节点的样式。id和styleClass变量 在CSS样式表中用于标识样式应指向的节点 被应用。style变量包含样式特性和值 直接应用于此节点的

差异

getStyleClass().add(“mainList”)
设置节点的
styleClass
,并通过声明以下内容在css文件中使用:

.mainList {
   ...
}
要向节点声明id(以您为例),应使用:

listView.setId("mainList");
您可以像在css文件中一样使用id:

#mainlist{
    ...
}
styleclass
通常以一组相同类型的节点为目标,其中
css id
以特定节点为目标(但不是强制性的)


注意:不要混淆
id
fx:id
。两者的用途不同,实现方式也不同

不知怎么的,它对我不起作用。。。它仍然无法加载样式,无法工作。。。请参见编辑。当我更改scene?的根目录时,可能与此有关!所以我发现我也可以只更改
.mainList.list单元格{…}
。并使用
listView.getStyleClass().add(“mylist”)相同的效果,对吗?我看不出任何原因,为什么你不能;)
#mainlist{
    ...
}