изменение цвета текста элемента управления меню в JavaFX с помощью FXML / CSS

Я хочу изменить цвет текста элемента управления Меню в JavaFX. В настоящее время цвет фона всей строки меню установлен на белый цвет, а цвет текста по умолчанию для отображения Menu -s также белый, поэтому я не вижу фактический элемент управления, поэтому я хочу установить черный цвет текста Меню ("Файл"). Как мне это сделать?

Вот часть FXML:

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <MenuBar id="modBar" layoutX="176.0" layoutY="122.0" styleClass="modBar">
      <menus>
        <Menu id="modItem" mnemonicParsing="false" styleClass="modItem" text="File" />
      </menus>
      <stylesheets>
        <URL value="test.css" />
      </stylesheets>
    </MenuBar>
  </children>
</AnchorPane>

Вот часть CSS:

.modBar
{
    -fx-background-color: white;
}
.modItem
{
    -fx-color: black;
}

Это не работает («Файл» по-прежнему остается белым). Что я делаю неправильно? Кроме того, я не могу применить что-нибудь с CSS к .modItem - он вроде работает в Scene Builder, но исчезает после предварительного просмотра (также отсутствует селектор «Таблицы стилей» во всех элементах Меню в SB).


person XXL    schedule 15.06.2012    source источник


Ответы (2)


Хорошо, думаю, я нашел ответ. Я извлек caspian.css из jfxrt.jar (по умолчанию используется JavaFX тема CSS) и проверить все, что связано с Menu -s:

.menu .label
{
    -fx-text-fill: black;
}

Это повлияет на все меню элементы управления.


Кстати, могла быть интересна особая сборка Scene Builder - b42, в ней был дополнительный CSS < / strong> меню, в котором представлены внутренние стили элементов управления / элементов, поэтому настройка превращается в простую операцию (без необходимости предварительного извлечения примененного стиля вручную).

person XXL    schedule 16.06.2012

Я не уверен, но вы устанавливаете атрибут id - разве это не значит, что вы можете получить к ним доступ только через #modBar или #modItem ???

Я также новичок в JFX2 (около месяца) и, к сожалению, за все годы моей работы в качестве разработчика Java мне никогда не приходилось экспериментировать с css, так что это всего лишь предположение.

person dzim    schedule 18.06.2012