2017-01-03 13 views
0

Для Button, я могу установить Tooltip черезУстановка подсказке для TableColumn в FXML

<Button> 
    <tooltip> 
     <Tooltip text="Tooltip text" /> 
    </tooltip> 
</Button> 

Как я могу сделать то же самое/похож на TableColumn?

<TableColumn> 
    <cellValueFactory> 
     <PropertyValueFactory property="someProperty" /> 
    </cellValueFactory> 
    <tooltip> 
     <Tooltip text="Tooltip text" /> 
    </tooltip> 
</TableColumn> 

Не работает ..

+0

Что вы хотите от этого сделать? Установите всплывающую подсказку в заголовке столбца (что на самом деле довольно сложно) или установите всплывающую подсказку в ячейках в столбце? (Ни один из них не может быть выполнен в FXML, вы должны сделать это в контроллере.) –

+0

Хороший вопрос. – GOXR3PLUS

ответ

3

Предполагая, что вы хотите всплывающую подсказку на заголовке столбца, один способ установить графики на TableColumn вместо установки текста и установить всплывающую подсказку на графике.

I.e. вместо:

<TableColumn text="Column 1"> 
    <cellValueFactory> 
     <PropertyValueFactory property="someProperty" /> 
    </cellValueFactory> 
</TableColumn> 

вы можете сделать

<TableColumn> 
    <cellValueFactory> 
     <PropertyValueFactory property="someProperty" /> 
    </cellValueFactory> 
    <graphic> 
     <Label text="Column 1"> 
      <tooltip> 
       <Tooltip text="Tooltip text" /> 
      </tooltip> 
     </Label> 
    </graphic> 
</TableColumn> 

Обратите внимание, что это имеет некоторые побочные эффекты. Например, в представлении таблицы есть menu button, который контролирует видимость столбцов. Это заполняется пунктами меню, текст которых является текстом столбца: поэтому использование этой технологии сделает эту кнопку меню непригодной. Создание столбца таблицы с помощью всплывающей подсказки при сохранении значения столбца таблицы text требует некоторого хакера CSS.

+0

Большое спасибо за объяснения! На самом деле я просто хочу предоставить дополнительную информацию о тексте заголовка столбца, что довольно коротко, чтобы сэкономить место. Так что да, я думаю, я хочу установить подсказку для заголовка столбца. Ваш подход заменит ранее введенный текст заголовка столбца? Вы знаете, почему нет прямого способа сделать это? – kerner1000

+1

Нет прямого способа сделать это, потому что 'TableColumn' не является« Узлом ». Мотивация заключается в том, что столбец считается частью модели данных табличного представления, а не ее фактическим представлением (хотя эта идея несколько разрушена с помощью свойства «graphic»: должен быть «headerCellFactory» или что-то подобное). Поскольку это не узел, нет всплывающей подсказки. Такой подход заменит текст ярлыком; поэтому вы установите текст ярлыка на текст, который вы хотите отобразить. Теперь у вас есть ссылка на метку, которая используется в качестве графика, поэтому вы можете установить всплывающую подсказку. –

+0

Все ясно, спасибо большое! – kerner1000