当前位置: 首页 > 知识库问答 >
问题:

ListView单元格的增长大于其包含的节点

熊嘉茂
2023-03-14

同样,我正在为我的大学项目开发GUI,我必须以一行的形式显示一系列由颜色定义的元素。因为它们可以在运行时更改,所以我使用了ListView。元素不能超过四个,它们应该占据一定的空间,但当我将节点放在列表单元格中时,单元格会在节点周围显示边框(本例中为矩形),这会使ListView超出其首选大小,并显示两个滚动条,这是我不想看到的,因为列表不应该是可滚动的,而且它非常小,所以条形图几乎涵盖了所有内容。

这是我为细胞工厂写的代码:

private void initializeBalcony(SimpleListProperty<String> balconyProperty, ListView<String> balconyView) {
        balconyView.setBorder(null);
        balconyView.setItems(balconyProperty);
        balconyView.setCellFactory(row -> new ListCell<String>() {
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);
                if (item == null || empty)
                    Platform.runLater(() -> this.setGraphic(null));
                else {
                    this.setMaxSize(27.5, 38);
                    Rectangle councillor = new Rectangle();
                    councillor.setWidth(20);
                    councillor.setHeight(35);
                    councillor.setFill(Paint.valueOf(item));
                    Platform.runLater(() -> this.setGraphic(councillor));
                }
            }
        });
    }

加上ListView的FXML定义:

<ListView fx:id="coastBalcony" fixedCellSize="38.0" layoutX="80.0" orientation="HORIZONTAL" prefHeight="40.0" prefWidth="120.0" />

问题的图形显示

我不知道我做错了什么,也许我应该只使用和HBox,但我曾经有问题与ListChangeListeners。

共有1个答案

齐文栋
2023-03-14

您正在设置fix edCellsize="38.0",在HORIZONTAL的情况下,方向是单元格的宽度。因此,您应该将其设置为期望值(从您的示例中,我猜它是27.5)。此外,您可能希望摆脱单元格填充,可以通过在ListCell实现中使用setPadd(new Inset(0))或在css中手动设置单元格填充:

.list-cell {
    -fx-padding: 0;
}
 类似资料:
  • 问题内容: 有没有一种使用HTML / CSS(具有相对大小)的方法来使一行单元格拉伸包含它的表的整个宽度? 单元格的宽度应相等,并且外部表格的大小也应使用来动态变化。 目前,如果我没有指定固定大小,单元格会自动调整大小以适合其内容。 问题答案: 您甚至不必为单元格设置特定的宽度,足以均匀地分布单元格。 请注意,要使用表格样式的元素,必须设置宽度(在我的示例中为100%)。

  • 我在FOP中有一个表,它工作得很好,直到我得到一个很长的单词。然后,该单词会覆盖表格中结束的单元格。我在表格单元格和/或单元格块中尝试了wrap-option="wrap ",但它不起作用 因为我想只显示位太复杂了,这里是完整的xsl文件: 单元格数据4存在问题……比如一次255个数字或字符,没有连字符或空格。 输入来自数据库,但可能如下所示: 结果应该是如下表格: 在单元4中依此类推 现在上面的

  • 我正在使用java类创建一个大型excel。Excel包含一个存储字符串的合并单元格。字符串的长度非常大,我动态地得到这个字符串。我需要增加合并单元格的高度,使整个字符串适合该单元格。我试过使用“包装文本”,它包装文本,但不会增加合并单元格的高度,因为完整的字符串在excel中不可见。我使用的Java类是: XS SF工作簿 XSSFSheet XSSFRow XSSFCell XS SF Cel

  • 嗨,我需要移动每行(扫描)中的一个单元格范围,这些单元格包含特定列(在我的情况下可以是任何列,但在我的代码中是coln“e”)中的一个单元格,该值以文本字符串L开始。以下是我所尝试的(我是VBA新手)。在本例中,我希望将移动到,其中是行号。

  • 我正在使用谷歌表单作为日常仪表板。我需要的是根据另一个单元格C5的值更改单元格B5的背景色。如果C5大于80%,则背景色为绿色,但如果低于,则为琥珀色/红色。 这是Google Sheets功能提供的还是我需要插入脚本?

  • 问题内容: 我正在将AutoSizing单元格与Autolayout和UICollectionView一起使用。 我可以在单元初始化的代码中指定约束: 但是,由于该单元尚未添加到中,该应用程序崩溃了。 问题 在该阶段的生命周期,可以添加一个约束的? 有没有作出任何默认方式的equal to the of thewithout accessing an instance of or? 编辑 这个问题