JavaFX ListCell启用横向增长

时间:2014-06-08 16:51:55

标签: java javafx javafx-2 javafx-8

我目前有一个可在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方法限制了给定节点的大小。

如果有必要,我可以提供我的所有代码,但是我不确定哪些部分是相关的,我不想发布一大堆代码。

2 个答案:

答案 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将不会收缩。