【发布时间】:2019-12-04 15:07:47
【问题描述】:
我目前正在使用 JavaFX 2 (JDK 1.8) 开发专业软件。当我在我的工具栏中放置一个 ComboBox 实例时,我找不到在 combo-box-base 中定义文本颜色的方法在列表视图中。
这是 FXML 文件 CommonToolBar:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.layout.HBox?>
<HBox styleClass="h-box" xmlns:fx="http://javafx.com/fxml/1" fx:controller="stackoverflow.controller.CommonToolBarController">
<ToolBar prefHeight="+Infinity" HBox.hgrow="ALWAYS">
<items>
<ComboBox fx:id="portSelection" prefHeight="30.0" prefWidth="100.0"/>
</items>
</ToolBar>
</Hbox>
CommonToolBarController 类:
package stackoverflow.controller;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.HBox;
public class CommonToolBarController extends HBox {
@FXML
private ComboBox<Label> portSelection;
@FXML
public void initialize() {
portSelection.getItems().addAll(new Label("COM1"),
new Label("COM2"),
new Label("COM3"),
new Label("COM4"));
}
}
我的 CSS 样式表的 .combo-box 部分:
.combo-box-base {
-fx-border-radius: 5.0;
-fx-background-radius: 5.0;
}
.combo-box-base:showing {
-fx-border-radius: 5.0 5.0 0.0 0.0;
-fx-background-radius: 5.0 5.0 0.0 0.0;
}
.combo-box .list-cell {
-fx-background-insets: 2.0;
-fx-background-radius: 3.0;
-fx-background-color: transparent;
-fx-text-fill: red;
}
.combo-box .list-cell:hover {
-fx-background-color: #0096C9;
}
.combo-box .list-view {
-fx-padding: 5.0 0.0;
-fx-border-radius: 0.0 0.0 5.0 5.0;
-fx-background-radius: 0.0 0.0 5.0 5.0;
}
最后的结果是:一切都很好,直到我选择了一个列表项,然后每个选定的项目都变成白色进入基础并透明进入列表视图。
我尝试在 .combo-box 选择器和之前的选择器中插入 -fx-text-fill 属性,但它永远不会起作用。有人可以解释一下吗? 提前谢谢你:)
【问题讨论】:
-
更新:我可以通过添加“.combo-box .label”类选择器来更改默认文本颜色。尽管如此,当我选择他时,每个项目仍然消失。
-
我已经添加了 FXML 视图和它的控制器,对你来说够了吗,还是我要添加其他东西?
-
不相关:你为什么想要
ComboBox<Label>?ComboBox<String>不是更合适吗? -
事实上……我不知道。但你是对的!行为不一样:)