ScalaFX/JavaFX:如何更改组合框的溢出样式?
我需要设置所选项目的名称。要设置溢出样式,据我所知,我需要访问ScalaFX/JavaFX:如何更改组合框的溢出样式?,java,scala,javafx,ellipsis,scalafx,Java,Scala,Javafx,Ellipsis,Scalafx,我需要设置所选项目的名称。要设置溢出样式,据我所知,我需要访问buttonCell(类型为ObjectProperty[javafx.scene.control.ListCell[T]) 因此我写了 val fileComboBox = new ComboBox[java.io.File](Seq()) println(fileComboBox.buttonCell) 要查看按钮cell成员的值 结果:[SFX]对象属性[bean:ComboBox@319f91f9[styleClass=co
buttonCell
(类型为ObjectProperty[javafx.scene.control.ListCell[T]
)
因此我写了
val fileComboBox = new ComboBox[java.io.File](Seq())
println(fileComboBox.buttonCell)
要查看按钮cell
成员的值
结果:[SFX]对象属性[bean:ComboBox@319f91f9[styleClass=combo box base combo box],名称:buttonCell,值:null]
,这意味着没有可以设置其溢出样式的按钮单元格(值:null
)
如何更改组合框的溢出样式?您可以使用外部CSS文件执行此操作:
.combo box>.list单元格{
-fx文本溢出:前导省略号;
}
有效值为[中心省略号|中心单词省略号|剪辑|省略号|前导省略号|前导单词省略号|单词省略号]
,默认值为省略号
也可以通过直接设置按钮单元格来完成此操作。在JavaFX中(我将把它翻译成Scala):
ListCell buttonCell=newlistcell(){
@凌驾
受保护的void updateItem(文件项,布尔值为空){
super.updateItem(项,空);
setText(空?null:item.getName());
}
};
buttonCell.SettexOverflow(Overflow样式.前导字母省略号);
setButtonCell(buttonCell);
您可以使用外部CSS文件执行此操作:
.combo box>.list单元格{
-fx文本溢出:前导省略号;
}
有效值为[中心省略号|中心单词省略号|剪辑|省略号|前导省略号|前导单词省略号|单词省略号]
,默认值为省略号
也可以通过直接设置按钮单元格来完成此操作。在JavaFX中(我将把它翻译成Scala):
ListCell buttonCell=newlistcell(){
@凌驾
受保护的void updateItem(文件项,布尔值为空){
super.updateItem(项,空);
setText(空?null:item.getName());
}
};
buttonCell.SettexOverflow(Overflow样式.前导字母省略号);
setButtonCell(buttonCell);
我想不到您能够在组合框中设置此选项。这对于需要用户逐行选择的控件没有意义。不过,您可以设置最小/最大/首选宽度。所选值是指向文件的路径,该文件的长度可能超过窗口宽度(尤其是当窗口大小调整为较小时)。路径的哪一部分更重要:头部还是尾部?是否可以只在组合框显示中存储文件名,而将完整路径存储在其值中?当然,前提是文件名是唯一的。当然是唯一的。但是我仍然必须在某处显示路径,否则用户无法确定是哪个文件。因此,我更喜欢最简单的解决方案:立即显示目录路径+基本名称。我不会想到您能够在组合框上设置它。这对于需要用户逐行选择的控件没有意义。不过,您可以设置最小/最大/首选宽度。所选值是指向文件的路径,该文件的长度可能超过窗口宽度(尤其是当窗口大小调整为较小时)。路径的哪一部分更重要:头部还是尾部?是否可以只在组合框显示中存储文件名,而将完整路径存储在其值中?当然,前提是文件名是唯一的。当然是唯一的。但是我仍然必须在某处显示路径,否则用户无法确定是哪个文件。因此,我更喜欢最简单的解决方案:立即显示目录路径+基本名称。我只是尝试了CSS设置(我非常喜欢,非常感谢您为我指出该设置!),它可以工作:-)我只是尝试了CSS设置(我非常喜欢,非常感谢您为我指出该设置!),它可以工作:-)
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);