2015-05-26 3 views
4

спасибо, что прочитали мой вопрос.Центрирование CheckBox на JavaFX TreeTableColumn

Я работаю с TreeTableView и сумел отобразить логическое значение в один из столбцов, выполнив результаты, предложенные на this answer. Он отлично работает, но при нанесении, флажок имеет выравнивание TOP_LEFT вместо CENTER один (выравнивание CENTER по умолчанию для использования флажков на регулярной TableView):

This is the TOP_LEFT alignment I'm having

^Это TOP_LEFT выравнивание У меня есть

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

Есть ли способ изменить выравнивание в CENTER или TOP_CENTER? Я использую Java8.

РЕДАКТИРОВАТЬ с подробной информацией Графический интерфейс выполнен в FXML, с табличного дерева внутри TitledPane. Использование this solution для центральных текстовых ячеек (одна и та же таблица, другие столбцы) отлично работает. Удаление этого от других столбцов не влияет на столбце Checkbox

Я попытался добавить Checkbox в двух разных манерах, но оба они имеют выравнивание TOP_LEFT:

colUsable.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(colUsable)); 

а другую попытку:

colUsable.setCellFactory(new Callback<TreeTableColumn<MyType,Boolean>,TreeTableCell<MyType,Boolean>>() { 
    @Override 
    public TreeTableCell<MyType,Boolean> call(TreeTableColumn<MyType,Boolean> p) { 
     return new CheckBoxTreeTableCell<>(); 
    } 
}); 

Большое спасибо.

+0

Не могли бы вы предоставить немного больше кода, пожалуйста? Вы делаете что-то в коде или в fxml? И таблица, заключенная в другой контейнер макета? – NwDev

+0

Вы уверены, что вы не устанавливаете выравнивание где-нибудь? –

+0

Спасибо NxDx и Murat K. Просто добавили больше информации! –

ответ

5

У меня есть способ сосредоточиться на этом. Класс CheckBoxTreeTableCell - это реализация Java8. Проверьте ссылку, чтобы увидеть документацию. Я нашел способ изменить выравнивание следующим образом:

colUsable.setCellFactory(new Callback<TreeTableColumn<MyType,Boolean>,TreeTableCell<MyType,Boolean>>() { 
    @Override 
    public TreeTableCell<MyType,Boolean> call(TreeTableColumn<MyType,Boolean> p) { 
     CheckBoxTreeTableCell<MyType,Boolean> cell = new CheckBoxTreeTableCell<MyType,Boolean>(); 
     cell.setAlignment(Pos.CENTER); 
     return cell; 
    } 
});