如何在java FX应用程序中设置组合框的提示文字样式?

时间:2014-01-30 15:18:14

标签: css combobox javafx-2 styling

我想修改我的组合框的css样式以减少其promptText的文本大小。

如何做到这一点?

7 个答案:

答案 0 :(得分:6)

如果您只想更改提示文本的大小而不是其他文本的大小,我认为没有任何方法:对于提示文本,它只是没有挂钩到文本节点,以区别于显示的文本

您可以通过特殊的css属性更改颜色:

.combo-box .text-field {
    -fx-prompt-text-fill: rgba(255, 0, 0, 0.5) ;
}
.combo-box .text-field:focused {
    -fx-prompt-text-fill: transparent ;
}

但我没有看到任何改变任何其他样式属性的方法。

答案 1 :(得分:2)

只需在您的css中添加以下代码

即可

.combo-box-base .text{ -fx-fill: rgb(130.0, 130.0, 130.0); }

答案 2 :(得分:1)

您检查过this了吗?尝试类似:

.combo-box .list-view {
    -fx-font-size: xxxx;
}

您可能需要指定其他属性和/或其他选择器才能达到预期效果(例如-fx-cell-size)。请参阅caspian.css中的相关部分(位于JRE的jfxrt.jar文件夹中的lib内)。

答案 3 :(得分:0)

使用此代码,我更改了组合框的样式:字体,字体大小,文本颜色等。

ComboBox<String> comboBox= new ComboBox<String>();
    comboBox.setPromptText("Text");

    comboBox.setButtonCell(new ListCell<String>(){
                @Override
                protected void updateItem(String item, boolean empty) {
                    super.updateItem(item, empty); 
                    setStyle("-fx-font-size: 17.0");
                    if(!(empty || item==null)){
                        setText(item.toString());
                    }
                }
            });

答案 4 :(得分:0)

有点使用Scenic View

的黑客攻击
function buildHierarchy(csv) {
  var root = {"name": "root", "children": []};
  for (var i = 0; i < csv.length; i++) {
    var sequence = csv[i][0];
    var size = +csv[i][1];
    if (isNaN(size)) { // e.g. if this is a header row
      continue;
    }
    var parts = sequence.split("-");
    var currentNode = root;
    for (var j = 0; j < parts.length; j++) {
      var children = currentNode["children"];
      var nodeName = parts[j];
      var childNode;
      if (j + 1 < parts.length) {
   // Not yet at the end of the sequence; move down the tree.
    var foundChild = false;
    for (var k = 0; k < children.length; k++) {
      if (children[k]["name"] == nodeName) {
        childNode = children[k];
        foundChild = true;
        break;
      }
    }
  // If we don't already have a child node for this branch, create it.
    if (!foundChild) {
      childNode = {"name": nodeName, "children": []};
      children.push(childNode);
    }
    currentNode = childNode;
      } else {
    // Reached the end of the sequence; create a leaf node.
    childNode = {"name": nodeName, "size": size};
    children.push(childNode);
      }
    }
  }
  return root;

};

答案 5 :(得分:0)

正如James D所说,这段代码只在某种条件下工作

 .combo-box .text-field {
     -fx-prompt-text-fill: rgba(255, 0, 0, 0.5) ;
 }
 .combo-box .text-field:focused {
     -fx-prompt-text-fill: transparent ;
 }

但仅当您激活组合框的可编辑属性时。

如果你添加

.combo-box-base .text

它甚至适用于组合框的元素

如果您不希望您的组合框可编辑JavaFx,请不要考虑这一点。我认为你必须自己通过添加PseudoClass来管理它并自己激活它......

或者让你的组合框可编辑但禁止键盘

或者您必须从另一个界面框架中获取另一个ComboBox

这些解决方案是解决方法而不是明确的解决方案我希望JavaFx开发人员能够改进这一点。

答案 6 :(得分:0)

我知道这已经很老了,有人可能会得到帮助。

对于默认组合框:

 .combo-box{
     -fx-prompt-text-fill: #ffffff;
 }

对于JFoenix组合框:

 .jfx-combo-box {
     -fx-prompt-text-fill: #ffffff;
 }

如果需要,还可以设置.list-cell .label .text-field子属性的样式。