需要一种在listcell中应用css的方法(javafx)

时间:2014-04-15 23:48:51

标签: java css javafx

我是java fx的新手,我不太了解css,这就是为什么我无法进行可接受的研究并在此发布(通过研究我相信它会更容易找到一个适当的解决方案)无论如何,我并不是要重复(我不理解关于在javafx控件上应用css的类似问题的答案)。

因此,情况包括列表视图(见下图):

Listview with listcells

我的问题是我无法找到一种方法来设置粗体中的最后一项(重点项目,9x17 - 母亲的小帮手)。

我接受与我所说的最佳方式相关的建议,即使不使用CSS也是更好的方法,我很乐意听到。我只需要一种方法来设置粗体的最后一项。感谢。

1 个答案:

答案 0 :(得分:0)


如果您想使列表的最后一项加粗,请使用以下方法:

listView.getItems().get(list.size()-1).setStyle("-fx-font-weight: bold");

虽然稍后在向其添加项目时不会更新列表 以下是工作可更新列表视图的示例:

public class Main extends Application {

    private ObservableList<Label> list;

    @Override
    public void start(Stage primaryStage) {
        try {
            AnchorPane root = new AnchorPane();
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();

            ListView<Label> l = new ListView<>();

            root.getChildren().add(l);

            list = l.getItems();
            list.addListener(new ListChangeListener<Label>() {

                @Override
                public void onChanged(
                        javafx.collections.ListChangeListener.Change<? extends Label> c) {
                    for(Label l : list){
                        l.setStyle("-fx-font-weight: normal");
                    }
                    list.get(list.size()-1).setStyle("-fx-font-weight: bold");
                }
            });

            l.getItems().add(new Label("test"));
            l.getItems().add(new Label("test"));

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

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

我知道在一个列表上运行foreach并不是最美好的事情,但它非常快,我无法找到另一种方法。

编辑:也许您应该创建一个更新方法,并且只在添加了一堆项目并且没有其他项目立即添加时才调用样式操作。上面示例的问题在于,它会在每个新条目之后被调用。

干杯,
Laurenz