2016-07-22 5 views
0

Я использовал html + css довольно много, но я совершенно не знаком с javafx + css. Так что это будет вопрос новичков, но я не могу найти ответ нигде.Как только изменить левое заполнение в javafx css

У меня есть большая GridPane, полная ярлыков (кроме других). Я могу установить прокладку для всех этих этикеток, например:

GridPane.containerLevel02 Label { 
    -fx-padding: 0 0 0 5; 
} 

Это работает. Я хочу, чтобы некоторые метки, чтобы быть более отступом поэтому я создаю класс «leftIndent» для них:

GridPane.containerLevel02 Label.leftIndent { 
    -fx-padding: 0 0 0 20; 
} 

Это тоже работает.

BUT, я не хочу указывать три нуля там, потому что, если я когда-либо решу добавить верхние и нижние прокладки к ярлыкам в целом, это не повлияет на метки «leftIndent».

Что я ищу что-то вроде:

GridPane.containerLevel02 Label.leftIndent { 
    -fx-padding-left: 20; 
} 

... как в "нормальной" CSS или ...

GridPane.containerLevel02 Label.leftIndent { 
    -fx-padding: null null null 20; 
} 

... или что-нибудь, что позволит мне укажите левое заполнение, оставляя верхнюю, правую и нижнюю прокладку нетронутыми с любыми значениями, которые они имеют в настоящее время.

Возможно ли это? СПАСИБО!

+0

Пожалуйста, проверьте это http://stackoverflow.com/questions/16977100/confgure-margin-for-individual-element-via-java-fx-css – vignesh

+0

Спасибо за быстрый комментарий, но это, похоже, другая проблема. решайте там. – tomorrow

+1

AFAIK это невозможно без пользовательского скина, так как это 'StyleableProperty ' и ему необходимо назначить из одного правила и afaik невозможно объединить несколько переменных в один элемент ''. – fabian

ответ

2

Поскольку JavaFX не предоставляет -fx-padding-left или аналогичный, я думаю, что ваше самое легкое обходное решение - использовать переменные. Например:

.root { 
    LABEL_PADDING_TOP: 0; 
    LABEL_PADDING_RIGHT: 0; 
    LABEL_PADDING_BOTTOM: 0; 
    LABEL_PADDING_LEFT: 5; 
} 

GridPane.containerLevel02 Label { 
    -fx-padding: LABEL_PADDING_TOP LABEL_PADDING_RIGHT LABEL_PADDING_BOTTOM LABEL_PADDING_LEFT; 
} 

GridPane.containerLevel02 Label.leftIndent { 
    -fx-padding: LABEL_PADDING_TOP LABEL_PADDING_RIGHT LABEL_PADDING_BOTTOM 20; 
} 

Он по-прежнему требует, чтобы переопределить все значения, которые могут быть нежелательными в некоторых случаях использования, но, по крайней мере, вы должны указать свои значения по умолчанию только в одном месте.

+0

Не так хорошо, как -fx-padding-left было бы, но определенно, достаточно хорошим для моего использования! Благодаря! – tomorrow

Смежные вопросы