2014-04-28 21 views
0

我開發一個聊天,並決定堅持以下結構:JavaFX的8:內垂直框設置樣式不適用

所有的聊天消息由外垂直框和內部垂直框(chatBlock)的。內部VBox包含帶標籤塊的窗格。一個窗格+標籤塊用於暱稱,另一個用於消息。

所以我想分別着色暱稱面板和消息面板。但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

試試這個:

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

編輯:

您應該添加nickNameBox和消息框到垂直框中。這些與任何事情都沒有關係。

例如在this.getChildren()。add(chatBlock)之前寫這些行;在initGUI()中:

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

它不起作用或者我使用顏色名稱或顏色十六進制。 – Dragon

+0

我編輯了我的答案。我希望它能起作用。 – Lyra