【问题标题】:How to make a non-editable ComboBox display promptText?如何使不可编辑的 ComboBox 显示 promptText?
【发布时间】:2015-04-04 09:32:32
【问题描述】:

我有 JavaFX 控件,这些控件可以与许多可能存在冲突的值相关联。

当控件是TextField 时,我使用promptText 属性将字符串(Multiple conflicting values) 放入TextField 并使用here 描述的技巧来确保promptText 在用户之前保持可见类型到字段中。这很好用。

现在,我想用ComboBox 做同样的事情,但我发现只有当editable 属性设置为true 时,ComboBox 才会显示promptText。这对我来说是个问题,因为我不希望用户在ComboBox 中输入任意字符串。我想将他限制在一组预先确定的选择范围内。

有没有办法让ComboBox 显示promptText,即使它的editable 属性设置为false?就我而言,扩展 ComboBox 是一种可接受的解决方案。

【问题讨论】:

    标签: java combobox javafx javafx-8


    【解决方案1】:

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

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

    要在用户更改ComboBox 之前保持promptText 可见,必须将CSS 技巧应用于内部TextField,而不是ComboBox 本身。

    未解决的问题:

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

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

    • 我见过失去焦点导致这样的ComboBox生成selectedItem更改事件,并且新值不是最初添加到ComboBox.getItems()的对象,而是原始的字符串表示目的!看来selectedIndex() 可以用来解决这个问题。

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

    【讨论】:

      猜你喜欢
      • 2018-11-07
      • 2010-09-10
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多