SWT hover-background-problem with first column in TreeViewer

wandlang

Neues Mitglied
Hi,

something strange happens when I switch-off the focus-coloring via LabelProvider and event.detail &= ~SWT.HOT and working with non-white backgeound color.

Looks like only the non-text area in the first column becomes white when the mouse is over it (and text-color/foreground changes to blue?).

Any idea how I can get rid of it?

Attached a picture of the effect, source below.

Thanks!

2018-01-20-22_25_06-multiple-lines-in-a-treeitem-png.10622


Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem;


public class testSwtTreeEvents {
    public static void main(String[] args) {
      Display display = new Display();
      Shell shell = new Shell(display);
      shell.setText("Multiple lines in a TreeItem");
      shell.setLayout(new FillLayout());
      final Tree tree = new Tree(shell, SWT.MULTI | SWT.FULL_SELECTION);
      tree.setHeaderVisible(true);
      tree.setLinesVisible(true);
      Color red = display.getSystemColor(SWT.COLOR_RED);
      Color green = display.getSystemColor(SWT.COLOR_GREEN);
      Color yellow = display.getSystemColor(SWT.COLOR_YELLOW);
             
      int columnCount = 4;
      for (int i = 0; i < columnCount; i++) {
        TreeColumn column = new TreeColumn(tree, SWT.NONE);
        column.setText("Column " + i);
        column.setWidth(100);
      }
      int itemCount = 3;
      for (int i = 0; i < itemCount; i++) {
        TreeItem item1 = new TreeItem(tree, SWT.NONE);
        item1.setText("item " + i);
        item1.setBackground(red);
        for (int c = 1; c < columnCount; c++) {
          item1.setText(c, "item [" + i + "-" + c + "]");
        }
        for (int j = 0; j < itemCount; j++) {
          TreeItem item2 = new TreeItem(item1, SWT.NONE);
          item2.setText("item [" + i + " " + j + "]");
          item2.setBackground(green);
          for (int c = 1; c < columnCount; c++) {
            item2.setText(c, "item [" + i + " " + j + "-" + c + "]");
          }
          for (int k = 0; k < itemCount; k++) {
            TreeItem item3 = new TreeItem(item2, SWT.NONE);
            item3.setText("item [" + i + " " + j + " " + k + "]");
            item3.setBackground(yellow);
            for (int c = 1; c < columnCount; c++) {
              item3.setText(c, "item [" + i + " " + j + " " + k + "-" + c + "]");
            }
          }
        }
      }

      /*
       * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly.
       * Therefore, it is critical for performance that these methods be as
       * efficient as possible.
       */
      Listener paintListener = new Listener() {
        public void handleEvent(Event event) {
          switch (event.type) {
          case SWT.MeasureItem: {
            TreeItem item = (TreeItem) event.item;
            String text = getText(item, event.index);
            Point size = event.gc.textExtent(text);
            event.width = size.x;
            event.height = Math.max(event.height, size.y);
            break;
          }
          case SWT.PaintItem: {
            TreeItem item = (TreeItem) event.item;
            String text = getText(item, event.index);
            Point size = event.gc.textExtent(text);
            int offset2 = event.index == 0 ? Math.max(0, (event.height - size.y) / 2) : 0;
            event.gc.drawText(text, event.x, event.y + offset2, true);
            break;
          }
          case SWT.EraseItem: {
            event.detail &= ~SWT.FOREGROUND;
            event.detail &= ~SWT.HOT;
            event.detail &= ~SWT.SELECTED;
            break;
          }
          }
        }

        String getText(TreeItem item, int column) {
          String text = item.getText(column);
          if (column != 0) {
            TreeItem parent = item.getParentItem();
            int index = parent == null ? tree.indexOf(item) : parent.indexOf(item);
            if ((index + column) % 3 == 1) {
              text += "\nnew line";
            }
            if ((index + column) % 3 == 2) {
              text += "\nnew line\nnew line";
            }
          }
          return text;
        }
      };
      tree.addListener(SWT.MeasureItem, paintListener);
      tree.addListener(SWT.PaintItem, paintListener);
      tree.addListener(SWT.EraseItem, paintListener);

      shell.setSize(600, 400);
      shell.open();
      while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
          display.sleep();
      }
      display.dispose();
    }
  }
 

Anhänge

  • 2018-01-20 22_25_06-Multiple lines in a TreeItem.png
    2018-01-20 22_25_06-Multiple lines in a TreeItem.png
    18,5 KB · Aufrufe: 255
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JavaFX Hover-Effekt bei Button AWT, Swing, JavaFX & SWT 11
dereki2000 Welcher Methodenaufruf bei Hover, click,... AWT, Swing, JavaFX & SWT 5
I JavaFX: "Hover" und "Transition"-Effekt onEntered/onExited AWT, Swing, JavaFX & SWT 0
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
L JavaFX Custom control mit Hover Effekt AWT, Swing, JavaFX & SWT 2
A Swing ImageIcon hover AWT, Swing, JavaFX & SWT 9
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
G JList hover möglich? AWT, Swing, JavaFX & SWT 2
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
M Swing JTable GroupableHeader Background Color AWT, Swing, JavaFX & SWT 4
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
ToBJo JavaFX "Blueprint" CSS Background AWT, Swing, JavaFX & SWT 4
vodkaz JButtonz Icon&Background AWT, Swing, JavaFX & SWT 3
F background bei JButton AWT, Swing, JavaFX & SWT 11
C [SWT] Widget Table verliert nach Sortierung farbige / eingefärbter Background / Zellen AWT, Swing, JavaFX & SWT 3
J JTextPane Background setzen AWT, Swing, JavaFX & SWT 6
Guybrush Threepwood JButton Background beim Klicken AWT, Swing, JavaFX & SWT 4
Luk10 Überschneidung von Image und Background AWT, Swing, JavaFX & SWT 7
G Model,Listener und background jobs AWT, Swing, JavaFX & SWT 4
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
S TableCellRenderer: JLabel-Background in JPanel AWT, Swing, JavaFX & SWT 7
O JTable label background und selection AWT, Swing, JavaFX & SWT 3
T Pseudo-Transparenz für Applets -> Background grabben AWT, Swing, JavaFX & SWT 15
P [SWT] Background-Image skalieren statt kacheln AWT, Swing, JavaFX & SWT 2
M JComboBox Selected-Background Farbe AWT, Swing, JavaFX & SWT 5
S noobfrage: background color wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
G background von JFrame funktioniert nicht AWT, Swing, JavaFX & SWT 9
G JFrame mit background bild -> verschiebt Buttons ? AWT, Swing, JavaFX & SWT 23
T Background Color JSpiner AWT, Swing, JavaFX & SWT 2
G TableCellRenderer Background variiert darstellen AWT, Swing, JavaFX & SWT 3
C Textfield Background auf Standard zurücksetzen AWT, Swing, JavaFX & SWT 2
S JTextArea background Transparent geht nicht AWT, Swing, JavaFX & SWT 23
A Background Image auf SWT Oberfläche legen AWT, Swing, JavaFX & SWT 3
A Probleme mit Windows Style (Background) AWT, Swing, JavaFX & SWT 4
G anfängerfrage:background und buttonimages AWT, Swing, JavaFX & SWT 3
R JButton background verdeckt gemaltes AWT, Swing, JavaFX & SWT 6
Z JPanels spiegeln und JLabel Background-color AWT, Swing, JavaFX & SWT 4
M JTable background AWT, Swing, JavaFX & SWT 2
saxman23 JLabel mit Background und Foreground setzen AWT, Swing, JavaFX & SWT 3
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben