org.eclipse.swt.widgets.Group in Linux XFCE


#1

Hallo

Ich hab Linux XFCE laufen und möchtein einen SWT-Beispiel eine “org.eclipse.swt.widgets.Group” erstellen. Das klappt erstmal formal.
Nur wenn ich das Ding starte dann sieht man von der Group recht wenig bis auf dem Text.
Den gleichen Effekt gibts übrigens unter MATE. Auf anderen Linux-Oberflächen hab ichs nicht probiert.

Unter Windows funktioniert das problemlos.


#2

Welchen style bekommt der Konstruktor von Group?


#3

Hi

So sieht die ganze Zeile aus:

        Group myGroup = new Group(myShell, SWT.NONE);

Meinste das hängt damit zusammen?

Grüsse


#4

Ganz sicher bin ich mir da nicht. Jedenfalls gibt es ja noch ein paar Möglichkeiten.

SHADOW_ETCHED_IN, SHADOW_ETCHED_OUT, SHADOW_IN, SHADOW_OUT, SHADOW_NONE

Aber einen Rand sollte er auch mit SWT.NONE zeichnen. Der Inhalt der Group wird aber angezeigt, es geht nur um den Rand?
Würde das ganze aber trotzdem mal ausprobieren mit den anderen Werten. Geht ja recht fix.

Bei Linux kann man meist auch das Look&Feel anpassen. Unter Umständen kann es sein, dass man ein Theme erwischt hat, bei dem solche Ränder nicht sichtbar sind. Könnte man auch mal durchprobieren.

Vielleicht auch eine schlechte Version von SWT erwischt, bei der ein Bug drin ist.

Hab mal auf meinem System das ganze ausprobiert und läuft auch mit SWT.NONE

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    
<modelVersion>4.0.0</modelVersion>

<groupId>org.ionutbaiu</groupId>
<artifactId>swtgrouptest</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>org.eclipse</groupId>
        <artifactId>swt</artifactId>
        <version>3.3.0-v3346</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.swt</groupId>
        <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
        <version>4.5</version>
    </dependency>
</dependencies>
</project>

GroupTest.java

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.*;

/**
 * Created by ionutbaiu on 21.03.17.
 */
public class GroupTest {

  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);

    shell.setText("Group Example");

    shell.setSize(300,300);
    shell.setLayout(new RowLayout(SWT.VERTICAL));

    //SWT.SHADOW_ETCHED_IN|SWT.SHADOW_ETCHED_OUT | SWT.SHADOW_IN | SWT.SHADOW_OUT | SWT.SHADOW_NONE
    Group group = new Group(shell, SWT.NONE );
    group.setText("Group ");
    group.setLayout(new RowLayout(SWT.VERTICAL));

    Label label = new Label(group, SWT.NONE);
    label.setText("Label in Group");

    Button button = new Button(group, SWT.PUSH);
    button.setText("Test Button");

    shell.open();

    while (!shell.isDisposed()) {
        if(!display.readAndDispatch()) display.sleep();
    }
    display.dispose();
  }
}

Auch wenn man es etwas schwer sieht, so ist doch ein Rand um die Group erkennbar. Habe aber auch ein recht dunkles Theme.


#5

Hi

Ich benutz swt-version 3.5

Dein Screenshot sieht aus wie das Ubuntu von meinem Kollegen. Eventuell GNOME3 ???

Ich benutze FXCE als Oberfläche.
Anyway: “SHADOW_IN” funktioniert grundsätzlich es zieht eine Linie - es sieht aber anders aus als bei Windows.


#6

Im maven Repository hab ich jetzt nur diese Versionen (aktuellsten) gefunden und manuell Installieren wollte ich jetzt auch nicht.

Desktop ist Ubuntu mit i3, sowie GTK 2/3 mit Arc-Dark-Theme.

Jedenfalls, wird ja immer mit den GTK-Bindings gearbeitet, weshalb unabhängig welchen Desktop man verwendet GTK für die Komponenten genutzt wird. Ausser eben Windows und Mac, die mit eigenen Bindings und Komponenten daherkommen.

Wikipedia sagt zudem auch, dass XFCE auf GTK+ basiert https://de.wikipedia.org/wiki/Xfce
Insofern sollte es da eigentlich keine grossen Unterschiede geben.