2017-02-07 3 views
1

В настоящее время я использую JavaFX ColorPicker для выбора цветов в приложении. Те, кто находится за пределами TableView, работают так, как ожидалось, но я столкнулся с проблемой с теми, что содержатся в файле TableView.JavaFX Color Picker Пользовательский цвет в ячейке таблицы

В настоящее время я использую solution found at Michael Simons's site для реализации пользовательских элементов управления в TableCell. Он отлично работает ... пока вы не откроете диалог Custom Color Color Picker. На этом этапе любое взаимодействие с настраиваемым диалоговым окном цвета закрывается и фиксирует редактирование, то есть вы не можете, например, использовать ключ RGB для определенного использования цвета.

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

ответ

0

Обнаружено решение; надеюсь, что это может помочь кому-то еще поиск:

Оригинальное решение использовало изменения слушателя совершить отредактированную ячейку таблицы:

this.colorPicker.valueProperty().addListener((observable, oldValue, newValue) -> { 
    if(isEditing()) { 
    commitEdit(newValue); 
    } 
}); 

Однако, ColorPicker пользовательского окно цвета непрерывно обновляют значение, как вы перетащите ползунки или цель вокруг. В результате, в первый раз, когда вы щелкнете, слушатель начнет стрелять, и вы закончите диалог.

Изменение этой функции на прослушиватель событий в отношении события isHiding устраняет эту проблему. ColorPicker скрывается, когда вы выбираете предустановленный цвет или при нажатии [Сохранить] или [Use] в пользовательском цветовом окне. Замените вышеприведенный фрагмент этим, и вам хорошо идти!

this.colorPicker.setOnHiding(event -> { 
    if (isEditing()) { 
     commitEdit(this.colorPicker.getValue()); 
    } 
});