java - 如何让不可编辑的ComboBox显示提示文本?

标签 java combobox javafx javafx-8

我的 JavaFX 控件可以与许多可能存在冲突的值关联。

当控件是 TextField 时,我使用 promptText 属性将字符串 (多个冲突值) 放入 TextField 并使用描述的技巧 here确保 promptText 保持可见,直到用户在字段中键入内容。这效果很好。

现在,我想对 ComboBox 做同样的事情,但我发现 ComboBox 仅在以下情况下才会显示 promptText editable 属性设置为 true。这对我来说是一个问题,因为我不希望用户在 ComboBox 中键入任意字符串。我想限制他进行一组预先确定的选择。

有没有办法让ComboBox显示promptText,即使它的editable属性设置为false ?在我的例子中,扩展ComboBox是一个可以接受的解决方案。

最佳答案

如果我设置ComboBox,一切似乎都能正常工作。可编辑,然后获取编辑器( TextField )并将其设置为不可编辑。

comboBox.setEditable(true)
comboBox.getEditor().setEditable(false)

保留 promptText可见,直到用户更改 ComboBox ,必须将CSS技巧应用到内部TextField ,而不是 ComboBox本身。

Unresolved 问题:

  • 用户无法输入 ComboBox ,但看起来他可以:它的样式就像他可以一样,鼠标光标甚至假设 I -beam 悬停在 ComboBox 的编辑器部分上时的外观.

  • 用户必须单击按钮才能展开并查看项目。他无法再点击不可编辑的较大目标区域ComboBox .

  • 我曾见过由于注意力不集中而导致的 ComboBox生成 selectedItem更改事件,并且新值不是最初添加到 ComboBox.getItems() 的对象,而是原始对象的字符串表示!看来selectedIndex()可以用来解决这个问题。

  • 最后也是最重要的:我的ComboBoxStringConverter开始接收null以前没有。

关于java - 如何让不可编辑的ComboBox显示提示文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328538/

相关文章:

java - Android 的动态文本更新 - ViewRootImpl$CalledFromWrongThreadException

java - 设置android.webkit.Web TextView类的文本颜色?

java - 使用 Apache POI 向 Powerpoint 幻灯片添加注释

java - 如何调整组合框下拉列表的大小?

JavaFX 按钮递增和递减事件无法正常工作

java - 如何在java中将扩展ASCII字符作为字符串读/写到ANSI编码文本文件中

java - 合成器中组合框箭头按钮的样式

extjs:加载时如何设置组合框的值

JavaFx 绑定(bind)和本地化

JavaFx 嵌套 Controller ?