为什么我无法在ListView中修改list-cell css?

时间:2017-04-22 00:38:41

标签: java css listview javafx scenebuilder

我想让我的列表单元格显示为"指针" /" hold"光标悬停时。 我设法定位整个listView并添加了背景颜色等,但它就像列表单元格不存在一样。我需要手动设置单元格工厂吗?

编辑: 我得到了答案,我不需要手动指定单元格,调用.list-cell应该足以添加样式。我的css应该可以正常工作,因为我正在设法改变其他元素的背景颜色,而不是.list-cell。我也尝试了fx-cursor

EDIT2: 我现在已经在scenebuilder Preview>中测试过了。场景样式表>添加样式表,并在该文档中放置:

.list-cell{
-fx-cursor: pointer;
}
.test{
-fx-background-color: black;
}

当我预览样本数据时仍然没有。

EDIT3: Screenshot 光标没有显示在屏幕截图中,但我可以告诉你我的CSS工作,而不是列表单元格。

到目前为止,我已尝试过:

CSS:

.list-cell{
    -fx-background-color:black;
    -fx-cursor: pointer;
}
#test .list-cell{
    -fx-background-color:black;
    -fx-cursor: pointer;
}
.test .list-cell{
    -fx-background-color:black;
    -fx-cursor: pointer;
}

JAVA:

teamListView.setCellFactory(new Callback<ListView<String>, 
javafx.scene.control.ListCell<String>>()
        {
            @Override
            public ListCell<String> call(ListView<String> teamListView)
            {
                return new ListCell();
            }
        });

代码:

我的控制器:

public class MainPageController implements Initializable {
    public static ObservableList<String> data = 
FXCollections.observableArrayList();

    @FXML
    private Label label;
    @FXML
    private ListView<String> teamListView;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
       Team escala = new Team("Escala", "Conrad Adams", 4987000);
       ArrayList<Team> teams = new ArrayList<Team>();
       teams.add(escala);
       data.add(teams.get(0).getName());
       teamListView.setItems(data);

    }     

}

1 个答案:

答案 0 :(得分:0)

我得到了修复,但我没有解释:

更改

.list-cell{
-fx-cursor: hand;
}

.list{
}
.list-cell:filled:hover{
-fx-cursor: hand;
-fx-text-fill: dimgrey;
}

我的第一个css元素似乎被忽略了,其余的被激活