ScalaFX / JavaFX:如何更改ComboBox的溢出样式?

时间:2016-03-28 14:43:20

标签: java scala javafx ellipsis scalafx

我需要设置所选项目的overrun style。要设置超限样式,据我所知,我需要访问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)。

如何更改组合框的超限样式?

1 个答案:

答案 0 :(得分:2)

您可以使用外部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);