У меня есть таблица, и я использую свой собственный LabelProvider для отображения цветов фона и переднего плана.Ячейка таблицы SWT переднего плана по выбору
От this Я получил, что я не могу изменить цвет фона выбора. Поэтому я хотел бы иметь возможность изменять цвет переднего плана текста при выборе. Однако я понятия не имею, как бы я мог определить, выбрана ли определенная строка, чтобы я мог использовать другой цвет переднего плана.
Любая помощь будет принята с благодарностью, я не слишком разбираюсь в swt.
EDIT: Для всех, кто ищет это то, что я сделал
public static void attachListenerIfWin7(Table table)
{
if (System.getProperty("os.name").startsWith("Windows") && System.getProperty("os.version").contains("6.1"))
{
table.addListener(SWT.EraseItem, new Listener()
{
public void handleEvent(Event event)
{
event.detail &= ~SWT.HOT;
if (event.detail != 24 && event.detail != 22 && event.detail != 18)
return;
int clientWidth = ((Composite) event.widget).getClientArea().width;
GC gc = event.gc;
Color oldForeground = gc.getForeground();
Color oldBackground = gc.getBackground();
// hover
if (event.detail == 24)
{
gc.setBackground(new Color(event.display, new RGB(115, 115, 115)));
gc.setForeground(new Color(event.display, new RGB(115, 115, 115)));
gc.fillRectangle(0, event.y, clientWidth, event.height);
}
// selected
else if (event.detail == 22)
{
gc.setBackground(new Color(event.display, new RGB(37, 37, 37)));
gc.setForeground(new Color(event.display, new RGB(105, 105, 105)));
gc.fillGradientRectangle(0, event.y, clientWidth, event.height, true);
}
// selected but out of focus
else if (event.detail == 18)
{
gc.setBackground(new Color(event.display, new RGB(57, 57, 57)));
gc.setForeground(new Color(event.display, new RGB(135, 135, 135)));
gc.fillGradientRectangle(0, event.y, clientWidth, event.height, true);
}
gc.setForeground(oldForeground);
gc.setBackground(oldBackground);
event.detail &= ~SWT.SELECTED;
}
});
}
}
Кроме того, если вы не возражаете, я спрашиваю , Как я могу предотвратить изменение цвета наведения? – Quillion