如何让不可编辑的ComboBox显示promptText?
How to make a non-editable ComboBox display promptText?
我的 JavaFX 控件可以与许多可能存在冲突的值相关联。
当控件是 TextField
时,我使用 promptText
属性 将字符串 (Multiple conflicting values)
放入 TextField
并使用描述的技巧here 以确保 promptText
在用户输入字段之前保持可见。这很好用。
现在,我想用 ComboBox
做同样的事情,但我发现 ComboBox
只有在 editable
属性 设置为 true
。这对我来说是个问题,因为我不希望用户在 ComboBox
中键入任意字符串。我想将他限制在一组预先确定的选择范围内。
有没有办法让 ComboBox
显示 promptText
,即使它的 editable
属性 设置为 false
?就我而言,扩展 ComboBox
是一个可以接受的解决方案。
如果我将 ComboBox
设置为可编辑,然后获取编辑器(TextField
)并将其设置为不可编辑,一切似乎都正常。
comboBox.setEditable(true)
comboBox.getEditor().setEditable(false)
要在用户更改 ComboBox
之前保持 promptText
可见,必须将 CSS 技巧应用于内部 TextField
,而不是 ComboBox
本身。
未解决的问题:
用户无法在 ComboBox
中键入内容,但看起来他可以:它的样式就像他可以的那样,鼠标光标甚至呈现 I
-beam悬停在 ComboBox
.
的编辑器部分时的外观
用户必须单击按钮才能展开并查看项目。他无法再单击不可编辑的较大目标区域 ComboBox
.
我见过失去焦点导致这样的ComboBox
产生一个selectedItem
改变的事件,而新的值不是原来添加到[=23的对象=],而是原始对象的字符串表示!似乎 selectedIndex()
可以用来解决这个问题。
最后也是最不重要的:我的 ComboBox
的 StringConverter
开始接收 null
s 而以前没有。
我的 JavaFX 控件可以与许多可能存在冲突的值相关联。
当控件是 TextField
时,我使用 promptText
属性 将字符串 (Multiple conflicting values)
放入 TextField
并使用描述的技巧here 以确保 promptText
在用户输入字段之前保持可见。这很好用。
现在,我想用 ComboBox
做同样的事情,但我发现 ComboBox
只有在 editable
属性 设置为 true
。这对我来说是个问题,因为我不希望用户在 ComboBox
中键入任意字符串。我想将他限制在一组预先确定的选择范围内。
有没有办法让 ComboBox
显示 promptText
,即使它的 editable
属性 设置为 false
?就我而言,扩展 ComboBox
是一个可以接受的解决方案。
如果我将 ComboBox
设置为可编辑,然后获取编辑器(TextField
)并将其设置为不可编辑,一切似乎都正常。
comboBox.setEditable(true)
comboBox.getEditor().setEditable(false)
要在用户更改 ComboBox
之前保持 promptText
可见,必须将 CSS 技巧应用于内部 TextField
,而不是 ComboBox
本身。
未解决的问题:
用户无法在
ComboBox
中键入内容,但看起来他可以:它的样式就像他可以的那样,鼠标光标甚至呈现I
-beam悬停在ComboBox
. 的编辑器部分时的外观
用户必须单击按钮才能展开并查看项目。他无法再单击不可编辑的较大目标区域
ComboBox
.我见过失去焦点导致这样的
ComboBox
产生一个selectedItem
改变的事件,而新的值不是原来添加到[=23的对象=],而是原始对象的字符串表示!似乎selectedIndex()
可以用来解决这个问题。最后也是最不重要的:我的
ComboBox
的StringConverter
开始接收null
s 而以前没有。