2016-07-01 6 views
2

Ниже приведено мое TreeTableView. Как вы можете видеть, стрелки для расширения коллапса уровня не соответствуют данным.JavaFX: выравнивание treetableview развернуть стрелку до содержимого строки

enter image description here Я хочу сделать их в одной строке. Но не знаю, как это сделать. Я пробовал следующие способы в css, но ничто из этого не работает.

.tree-table-row-cell .arrow { 
    -fx-alignment: CENTER; 
    -fx-mark-color:red; 
} 
.tree-table-row-cell .arrow-button { 
    -fx-alignment: CENTER; 
    -fx-mark-color:blue; 
} 

.tree-table-cell .arrow { 
    -fx-alignment: CENTER; 
    -fx-mark-color:yellow; 
} 
.tree-table-cell .arrow-button { 
    -fx-alignment: CENTER; 
    -fx-mark-color:green; 
} 
.tree-table-cell > .arrow-button >.arrow{ 
    -fx-alignment: CENTER; 
    -fx-mark-color:purple; 
} 
.tree-table-row-cell > .arrow-button >.arrow{ 
    -fx-alignment: CENTER; 
    -fx-mark-color:grey; 
} 

Есть ли у кого-нибудь идеи, как я могу это достичь?

+0

Поведение по умолчанию, что линия вертикально совмещен с маркером. Но вы изменили выравнивание маркера или шрифта в любом другом css, который заражает это. Если это файл fxml, и у вас уже есть сценарий, попробуйте проанализировать его с помощью «Анализатора CSS» -Feature в сценарии. Вы увидите, переопределены ли значения по умолчанию. – NwDev

ответ

2

Это не идеально (и прошло уже полтора года с тех пор, как это было задано), но мне нужно было сделать то же самое, и это лучшее, что я мог придумать.

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

Использование Scenic View (отличный инструмент для решения подобных проблем) Я обнаружил, что вокруг узла стрелки есть оболочка с классом .tree-discoveryure-node. (Scenic View также является тем, как я знаю, что он уже сосредоточен.) Поэтому я просто добавил некоторые верхние дополнения к этой оболочке.

Не беспокойтесь, пытаясь надеть стрелу, поскольку это просто сделает стрелку больше.

Надеюсь, это поможет кому-то.

.tree-disclosure-node { 
    -fx-padding: 15 5 0 5; 
} 

enter image description here