ScalaFX/JavaFX: 如何更改组合框的溢出样式?
ScalaFX/JavaFX: How can I change the overrun style of a ComboBox?
我需要设置选中项的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
)。
如何更改组合框的溢出样式?
您可以使用外部 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);
我需要设置选中项的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
)。
如何更改组合框的溢出样式?
您可以使用外部 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);