Я использую JXTreeTable
. Я хочу показать текст в ячейке, только если строка свернута. Если строка расширяется, подробные значения отображаются в дочерних элементах, поэтому сокращенный текст в родительском объекте больше не должен быть видимым.CellContext.isExpanded() всегда возвращает true в JXTreeTable
Насколько я знаю, это необходимо реализовать, предоставив специальный ComponentProvider
, используемый DefaultTableRenderer
. Во всяком случае CellContext
, используемый ComponentProvider
, всегда указывает, что узел расширен. context.isExpanded()
всегда возвращает true
.
StringValue valueProvider = new StringValue()
{
@Override
public String getString(Object value)
{
return String.valueOf(value);
}
};
ComponentProvider<?> textProvider = new LabelProvider(valueProvider, JLabel.TRAILING)
{
@Override
protected String getValueAsString(CellContext context)
{
System.out.println("Context expanded " + context.isExpanded());
if (context.isExpanded())
{
return "";
}
return super.getValueAsString(context);
}
};
DefaultTableRenderer renderer = new DefaultTableRenderer(textProvider);
Что я должен изменить в ComponentProvider
обнаружить, если строка клетки расширяется или нет?
Это приводит к решению, указанному в моем редактируемом вопросе. Благодаря! – Uli
Я рад, что это помогло! Пожалуйста, подумайте о том, чтобы добавить свое редактирование в качестве ответа и принять его вместо моего, поскольку вопрос должен содержать только проблему. Я бы сказал это наверняка :) Если бы этот ответ был полезен, вы можете его проголосовать. @Uli – dic19