我正在开发聊天,并决定坚持以下结构:
所有聊天消息都包含外部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面板内单独块的着色?
答案 0 :(得分:1)
试试这个:
nickNameBox.setStyle("-fx-background-color: #992222;");
编辑:
您应该将nickNameBox和messageBox添加到VBox。这些与任何事都无关。
例如在this.getChildren()之前写下这些行.add(chatBlock);在initGUI()中:
this.getChildren().add(nickNameBox);
this.getChildren().add(messageBox);