我目前有一个可在Width中调整大小的ListView,我使用一个自定义的CellFactory来返回我的自定义ListCell对象。
我已经读过这个: Customize ListView in JavaFX with FXML我使用了与上述类似的结构:
public class ListViewCell extends ListCell<String>{
@Override
public void updateItem(String string, boolean empty){
super.updateItem(string,empty);
if(string != null) {
...
setGraphic(myComponent);
}
}
我希望myComponent
获取ListCell中可用的完整大小,但似乎setGraphic
方法限制了给定节点的大小。
如果有必要,我可以提供我的所有代码,但是我不确定哪些部分是相关的,我不想发布一大堆代码。
答案 0 :(得分:0)
尝试通过CSS或通过API将控件的prefWidth
属性设置为Infinity
,以便在容器中提供最大扩展:
myComponent.setStyle("-fx-pref-width: Infinity");
答案 1 :(得分:0)
我现在解决了我的问题,现在是这样的:
class MyListCell extends ListCell<MyObject>
{
private final AnchorPane _myComponent;
public MyListCell()
{
...
this.setPrefWidth(0);
myComponent.prefWidthProperty().bind(this.widthProperty());
}
...
@Override
protected void updateItem(MyObject item, boolean empty)
{
...
setGraphic(_myComponent);
...
}
}
如果省略this.setPrefWdith(0)
,myComponent将在ListCell中增长,但如果我缩小ListView,Cell将不会收缩。