gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 10:42:02 28 4
gpt4 key购买 nike

我是 java fx 的新手,我对 css 了解不够,这就是为什么我无法进行可接受的研究并将其发布在这里(通过研究我相信会更容易找到一个妥善解决)。无论如何,我不是故意重复(我不明白关于在 javafx 控件上应用 css 的类似问题的答案)。

因此,情况包含在 ListView 中(见下图):

Listview with listcells

我的问题是我找不到将最后一项设置为粗体(重点元素,9x17 - Mother's Little Helper)的方法。

我接受有关执行我所说内容的最佳方法的建议,即使这是不使用 css 的更好方法,我也很乐意听到。我只需要一种将最后一项设置为粗体的方法。谢谢。

最佳答案


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

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

不过,当您稍后向列表中添加元素时,这不会更新列表。
这是一个工作的可更新 ListView 的示例:

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 并不是最美妙的事情,但它非常快,我想不出另一种方法。

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

干杯,
劳伦斯

关于java - 需要一种在 listcell (javafx) 中应用 css 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com