JavaFX 8:内部VBox的设置样式不适用

时间:2014-04-28 13:23:38

标签: java javafx-8

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

所有聊天消息都包含外部VBox和内部VBox(chatBlock)。内部VBox包含带有标签块的窗格。一个Pane + Label块用于昵称,另一个用于消息。

所以我想分别为昵称面板和消息面板着色。但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面板内单独块的着色?

1 个答案:

答案 0 :(得分:1)

试试这个:

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

编辑:

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

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

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