JavaFX 8 : setting style for inner VBox doesn't apply

标签 java javafx-8

我正在开发一个聊天功能,并决定坚持以下结构:

所有聊天消息均由外部 VBox 和内部 VBox (chatBlock) 组成。内部 VBox 包含带有标签 block 的 Pane 。一个 Pane + 标签 block 用于昵称,另一个用于消息。

所以我想分别为昵称面板和消息面板着色。但 setStyle() 仅适用于内部 VBox。这是我想要做的代码:

public class ChatMessageBlock extends VBox {
    private VBox chatBlock = new VBox();
    private Pane nickNameBox = new Pane();
    private Label nickname;
    private Pane messageBox = new Pane();
    private Label message;

    public ChatMessageBlock(String nickname, String message) {
        this.nickname = new Label(nickname);
        this.message = new Label(message);
        this.message.setWrapText(true);
        initGUI();
    }

    private void initGUI() {
        nickNameBox.setStyle("-fx-background-color: red"); //DOESN'T WORK
        messageBox.setStyle("-fx-background-color: green"); //DOESN'T WORK
//        chatBlock.setStyle("-fx-background-color: blue"); //WORK
        nickNameBox.getChildren().add(nickname);
        messageBox.getChildren().add(message);
        chatBlock.getChildren().addAll(nickname, message);
        this.getChildren().add(chatBlock);
    }
}

如何实现VBox面板内单独 block 的着色?

最佳答案

试试这个:

nickNameBox.setStyle("-fx-background-color: #992222;");

编辑:

您应该将 nickNameBox 和 messageBox 添加到 VBox。这些与任何事情都没有关系。

例如在 this.getChildren().add(chatBlock); 之前写入这些行在 initGUI() 中:

this.getChildren().add(nickNameBox);
this.getChildren().add(messageBox);

关于JavaFX 8 : setting style for inner VBox doesn't apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23342319/

相关文章:

java - 密封内部类

java - 使用内容值在 sqlite 中插入多行

animation - 如何在 JavaFX 中使用 CSS 制作动画?

Javafx 按钮突出显示

JavaFX TableView : Rapid change in items list not reflected

java - 如何为我的程序生成工作 jar 文件?

java - 停用 JList 中的按字母选择

java - 小型应用程序是否需要 Hibernate 和 Spring 集成?

JavaFX 8 制作桌面截图

java - 在javafx中更新canvas