我想修改我的组合框的css样式以减少其promptText的文本大小。
如何做到这一点?
答案 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
子属性的样式。