scalafx/javafx:如何更改组合框的溢出样式?

xkrw2x1b  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(380)

我需要设置所选项目的溢出样式。要设置溢出样式,据我所知,我需要访问 buttonCell (属于 ObjectProperty[javafx.scene.control.ListCell[T]] ).
因此我写了

val fileComboBox = new ComboBox[java.io.File](Seq())
println(fileComboBox.buttonCell)

以查看 buttonCell 成员有。
结果: [SFX]ObjectProperty [bean: ComboBox@319f91f9[styleClass=combo-box-base combo-box], name: buttonCell, value: null] ,这意味着没有可以设置其溢出样式的按钮单元格( value: null ).
如何更改组合框的溢出样式?

xxe27gdn

xxe27gdn1#

可以使用外部css文件执行此操作:

.combo-box > .list-cell {
  -fx-text-overrun: leading-ellipsis ;
}

有效值为 [ center-ellipsis | center-word-ellipsis | clip | ellipsis | leading-ellipsis | leading-word-ellipsis | word-ellipsis ]ellipsis 作为默认值。
也可以通过直接设置按钮单元格来实现这一点。在javafx中(我将把它翻译成scala):

ListCell<File> buttonCell = new ListCell<File>() {
    @Override
    protected void updateItem(File item, boolean empty) {
        super.updateItem(item, empty);
        setText(empty ? null : item.getName());
    }
};
buttonCell.setTextOverrun(OverrunStyle.LEADING_ELLIPSIS);
fileComboBox.setButtonCell(buttonCell);

相关问题