Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX组合框没有';不渲染已调整大小的单元格_Java_Javafx_Combobox - Fatal编程技术网

JavaFX组合框没有';不渲染已调整大小的单元格

JavaFX组合框没有';不渲染已调整大小的单元格,java,javafx,combobox,Java,Javafx,Combobox,我试图在JavaFX15中编写一个简单的颜色选择器组合框。我希望下拉菜单包含大量非常小的单元格。不幸的是,当我设置单元格大小并增加可见行数时,其中许多行显示为空。程序似乎在计算要渲染的单元数,这是基于调整大小之前适合列表视图的单元数 更改可见行的数量或列表视图的大小会导致渲染的单元格数量不同,但空单元格的比例保持不变。我曾尝试使用hide()和show()方法来强制组合框重新绘制自身(如本文所建议的那样:),并尝试使用矩形替换背景,并摆弄CSS和属性绑定,但到目前为止没有任何效果 这是我的密码:

我试图在JavaFX15中编写一个简单的颜色选择器
组合框
。我希望下拉菜单包含大量非常小的单元格。不幸的是,当我设置单元格大小并增加可见行数时,其中许多行显示为空。程序似乎在计算要渲染的单元数,这是基于调整大小之前适合
列表视图的单元数

更改可见行的数量或列表视图的大小会导致渲染的单元格数量不同,但空单元格的比例保持不变。我曾尝试使用
hide()
show()
方法来强制
组合框重新绘制自身(如本文所建议的那样:),并尝试使用
矩形替换背景,并摆弄CSS和
属性
绑定,但到目前为止没有任何效果

这是我的密码:有什么建议吗

public class ColorComboBox extends ComboBox {

    String[] colorCodes = {"#CD5C5C", "#F08080", "#FA8072", "#E9967A", "#FFA07A", "#DC143C", ...

    ColorComboBox() {
        setCellFactory(lv -> new ColorCell());
        setVisibleRowCount(30);
        getItems().addAll(colorCodes);
     }

    public class ColorCell extends ListCell<String> {
        
        @Override
        public void updateItem(String color, boolean empty) {
            super.updateItem(color, empty);
            setPrefSize(40, 6);
            if(empty)
                setBackground(null);
            else
                setBackground(new Background(new BackgroundFill(Color.web(color), CornerRadii.EMPTY, Insets.EMPTY)));         
        }
    }
}
公共类ColorComboBox扩展了ComboBox{
字符串[]颜色代码={“#CD5C5C”、“#F08080”、“#FA8072”、“#E9967A”、“#FFA07A”、“#DC143C”、。。。
ColorComboBox(){
setCellFactory(lv->new ColorCell());
设置VisibleRowCount(30);
getItems().addAll(颜色代码);
}
公共类ColorCell扩展了ListCell{
@凌驾
public void updateItem(字符串颜色,布尔空){
super.updateItem(颜色,空);
setPrefSize(40,6);
if(空)
倒退(空);
其他的
收进背景(新背景(新背景填充(Color.web(Color)、CornerRadii.EMPTY、Insets.EMPTY));
}
}
}

为了本练习,您是否故意忽略了该类?我不确定所有用户都会喜欢6像素高的单元格…请尝试移动
setPrefSize(40,6)
ColorCell
构造函数,或者完全忽略它,并在CSS文件中使用以下内容:
.combo box.combo box popup.list view{-fx fixed cell size:6px;}
@James\u D,这些建议中的第二个对我很有用。不知何故,我以前没有找到正确的属性。谢谢!