SWT-дерево со столбцами: удаление чередующейся фоновой окраски для строк в Linux / Mac - PullRequest
0 голосов
/ 26 мая 2011


Я закрашиваю некоторые столбцы дерева столбцами (которые выглядят как Таблица).В системах Windows это выглядит хорошо, но в Linux / Mac это не так, потому что они используют чередующиеся цвета фона (белый, синий, белый, синий, ...).
Я хотел бы удалить чередование фона для дерева,Есть идеи, если это возможно?Я пытался запретить tree.setLinesVisible(true) в этих системах, но он также не будет рисовать вертикальные линии, которые мне нужны.

1 Ответ

0 голосов
/ 29 мая 2011

Я думаю, что вы можете сделать это, используя владельца. Используйте этот фрагмент в качестве отправной точки и замените обработчик события EraseItem следующим:

public void handleEvent( Event event ) {
   event.detail &= ~SWT.HOT;
   GC gc = event.gc;
   Rectangle area = table.getClientArea();
   /*
    * If you wish to paint the selection beyond the end of
    * last column, you must change the clipping region.
    */
   int columnCount = table.getColumnCount();
   if ( event.index == columnCount - 1 || columnCount == 0 ) {
      int width = area.x + area.width - event.x;
      if ( width > 0 ) {
         Region region = new Region();
         gc.getClipping(region);
         region.add(event.x, event.y, width, event.height);
         gc.setClipping(region);
         region.dispose();
      }
   }
   gc.setAdvanced(true);
   if ( gc.getAdvanced() ) gc.setAlpha(127);
   Rectangle rect = event.getBounds();
   Color background = gc.getBackground();
   gc.setBackground(display.getSystemColor(SWT.COLOR_RED));
   gc.fillRectangle(0, rect.y, 500, rect.height);
   // restore colors for subsequent drawing
   gc.setBackground(background);
}

Должен работать на GTK (который использует оконный менеджер linux, используемый SWT) и с Trees, но не пробовал.

Поскольку рисование владельца дорого, я настоятельно рекомендую добавить такой обработчик событий для GTK:

if(SWT.getPlatform().equals("gtk")){ ... }

Но весь смысл SWT в том, чтобы иметь собственный рисунок. Это улучшает восприятие вашего программного обеспечения пользователем, потому что пользователи чувствуют себя «как дома». Может быть, вы можете разработать способ, при котором вам не нужно убирать альтернативный фон для пользователей GTK.

...