当前位置: 首页 > 知识库问答 >
问题:

每个选定项的JavaFX组合框背景色

贺自明
2023-03-14

这可能吗?

共有1个答案

富涛
2023-03-14

如果只想设置组合框本身的颜色,而不是下拉列表中组合框项的颜色,则可以在组合框的buttonCellProperty和valueProperty之间创建自定义绑定,以实现自定义着色。

如果选择了第一项,则此示例将组合框颜色设置为绿色,如果选择了第二项,则将其设置为红色,否则将保持颜色不变。

ComboBox<String> combo = new ComboBox<>();
combo.setItems(FXCollections.observableArrayList("First", "Second", "Third", "Fourth"));

combo.buttonCellProperty().bind(Bindings.createObjectBinding(() -> {

    int indexOf = combo.getItems().indexOf(combo.getValue());

    Color color = Color.TRANSPARENT;

    switch (indexOf) {
    case 0: color = Color.GREEN; break;
    case 1: color = Color.RED; break;
    default: break;
    }

    final Color finalColor = color;

    // Get the arrow button of the combo-box
    StackPane arrowButton = (StackPane) combo.lookup(".arrow-button");


    return new ListCell<String>() {

        @Override
        protected void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);

            if (empty || item == null) {
                setBackground(Background.EMPTY);
                setText("");
            } else {
                setBackground(new Background(new BackgroundFill(finalColor, CornerRadii.EMPTY, Insets.EMPTY)));
                setText(item);
            }

            // Set the background of the arrow also
            if (arrowButton != null)
                arrowButton.setBackground(getBackground());
        }

    };
}, combo.valueProperty()));
 类似资料:
  • 我有一个带有2个ComboBox的应用程序,我想将用户的选择返回到一个变量中。我该怎么做?这是我的控制器类: 我需要使用这个变量来改变应用程序的工作方式。在“methode”组合框中,我想要一个包含大量文本字段的新窗口。例如,如果用户选择3,它将打开一个包含3个文本字段的新窗口,或者(如果可能,只需在组合框下方添加3个测试字段)谢谢

  • 我在用这个http://www.primefaces.org/showcase-labs/ui/selectManyCheckbox.jsfprimefaces组件获取动态布尔复选框值 我需要对所有布尔复选框应用不同的颜色,如下图所示 如果id=1,则颜色为红色;如果id=2,则颜色为橙色,依此类推。 正如我们所知,这些是电影中的动态值,那么我如何从backing bean为这些动态复选框设置背景

  • 问题内容: 我有一个框,当单击框并显示所有选项时,我正在尝试更改选项的背景色。 HTML: CSS: 问题答案: 你需要把对标签,而不是标签… 如果要为每个标签设置样式,请使用css 选择器:

  • 我有一个选择框,当选择框被单击并显示所有选项时,我正在尝试更改选项的背景颜色。

  • 我目前正在创建一个工具来为不同的事件提交报告。 在第一步中,用户选择通话中的每个人(我们有一个26人的团队)。在下一步中,将每个选定的人写入6个不同的组合框中,以便用户可以选择每辆车的驾驶员和指挥官(3辆车-每辆车上的指挥官和驾驶员,因此有6个组合框)。 我的问题是:我需要防止在每辆车上都选择同一个人作为驾驶员,或者同时作为驾驶员和指挥官。因此,我尝试通过ChangeListener从其他组合框中

  • 我正在使用Gluon scenebuilder,我正在用很多可编辑的组合框制作UI(重要的是因为这个问题不会出现在不可编辑的组合框上)。我需要组合框的颜色为红色(或者任何颜色都无关紧要),但是当我在组合框的样式选项卡中使用-fx-background-color和#a80808时,只有框的边框才会变成红色。作为对问题的澄清:场景构建器截图 作为与此相关的第二个问题,我也愿意在应用程序运行时更改颜色

  • 我创建了一个 (JavaFX) 组合框,我正在填充一个由 HBoxes 制成的可观察列表,以便我可以在每个列表单元格中显示带有一些文本的图像。 这显示得很好,除了每当您选择列表中的一个项目时,它都会消失。一旦您选择了每个项目,它根本不会呈现任何项目。(您仍然可以通过单击它们之前所在的空间来选择它们。 你知道我该怎么纠正吗? 我的部分代码显示如下: 提前感谢您的帮助!

  • 我有3个组合框,当我选择第一个组合框时,我希望第二个组合框的第一项和第三个组合框被自动选择。当选择第二个组合框的第一项时,将触发第三个组合框的on选择事件,但参数未定义 当我选择第一个组合框的项目时,这里的是未定义的。当我选择第二个组合框的项目时,它不是 为什么?