Как изменить цвет кнопок, сделанных из конструктора сцен?

#java #javafx #scenebuilder

#java #javafx #scenebuilder

Вопрос:

Я создал несколько кнопок (каждая представляет город) в SceneBuilder. Мне нужно установить их цвет в соответствии с количеством домов в каждом городе. Более темный, указывающий на большее количество свойств, и менее светлый (красный).

Я присвоил каждой кнопке fx: id в конструкторе сцен и вызвал ее в своем коде, но я не уверен, как изменить ее цвет с помощью кода javafx.

Кто-нибудь может мне помочь, я очень новичок в Javafx.

@FXML private Button b1 = new Button();

Сначала я пытался проверить, изменится ли цвет на самом деле, но он не меняется

 @FXML
private void test() {
    for (House s: list) {   
        if(s.getHouse().equals("Manchester") > 10000) {                
            DropShadow s = new DropShadow();
            b1.setEffect(s);        
            b1.setStyle("fx-background-color: #FF0000");
        }
}
  

}

Комментарии:

1. Опубликуйте, пожалуйста, какой-нибудь код

2. Пожалуйста, опубликуйте свой код или, по крайней мере, фрагменты

3. Выполнено. Могу ли я изменить цвет кнопок из javafx, если кнопка была создана в конструкторе сцен?

4. Изменить b1.setStyle("fx-background-color: #FF0000"); на b1.setStyle("-fx-background-color: #FF0000");

5. Спасибо, у меня это сработало 😉

Ответ №1:

Как указал c0oder, это была простая ошибка.

Изменить b1.setStyle("fx-background-color: #FF0000"); на b1.setStyle("-fx-background-color: #FF0000");

Это сделало свое дело.

Ответ №2:

Вы можете изменить цвет кнопок непосредственно с помощью свойства, а не манипулируя стилем.

Вот пример изменения текста в кнопке на красный:

 button.setTextFill(Color.RED);
  

Это означало бы изменение цвета фона:

 button.setBackground(new Background(new BackgroundFill(Color.RED, null, null);
  

Комментарии:

1. button.setBackground(new Background(new BackgroundFill(Color.REED, null, null); не компилируется. Пожалуйста, опубликуйте протестированный код.

2. Он должен быть Color.RED. Пример: button.setBackground(new Background(new BackgroundFill(Color.RED, null, null);