Swing Bug: mehrfache Panels bei Mouseover?

tueftli

Mitglied
Hallo Leute!
Ich knabbere seit geraumer Zeit an einem Problem, komme aber nicht wirklich weiter bzw. finde die Ursache nicht, aber vielleicht ist einer von euch schon auf was ähnliches gestoßen bzw. kann mein Problem reproduzieren.

Wenn ich beispielsweise bei einem Button einen Tooltip anzeigen lasse, wird der Inhalt eines Tab auf das enthaltene Panel dupliziert darübergezeichnet. Das sieht dann z.B. so aus, wie im Bild, verändert sich aber laufend, je nachdem, wo ich den Cursor hinbewege:

PanelProblem-1.jpg


Bevor ich lange um den heißen Brei herumrede, schlage ich vor, ihr probiert es selbst aus. Ich habe den Code auf ein absolutes Minimalbeispiel eingedampft:

Java:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class Main_frame extends JFrame{
   
    private JTabbedPane tabbedPane = new JTabbedPane();
    private JPanel panel = new JPanel();
    private JButton button = new JButton("Button");
   
    Main_frame() {
       
        tabbedPane.addTab("Tab", null, panel, "Tab-Tip");
        setContentPane(tabbedPane);
       
        button.setToolTipText("Button-Tip");
        panel.add(button);
    }
   
    public static void main(String[] args) {
       
        Main_frame frame = new Main_frame();
        //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 100);
   
        frame.setVisible(true);
    }
}

Um das Problem zu reproduzieren, macht folgendes:
1. Lasst euch den Tooltip des Buttons anzeigen
2. Klickt auf den Button
3. Bewegt den Cursor vom Button weg Richtung Tab


Mir ist dabei aufgefallen, dass das Problem anscheinend nur auftritt, wenn der Tooltip des Buttons bei Anzeige außerhalb des Frames erscheint. Dazu muss er sich nahe am rand des Frames befinden. Vergrößert man die vertikale Höhe des Frames auf 200, so scheint das Problem nicht aufzutreten.


Für mich stellen sich nun ein paar Fragen:
1. Könnt ihr das Problem reproduzieren? - Wenn nein, was ist bei euch anders?
2. Ist es evtl. ein (bekannter) Bug? (verwende Java 10.0.1 unter Win 10)
3. Gibts eine Möglichkeit für einen Workaround?

Grüße!
tueftli
 

Anhänge

  • PanelProblem-1.jpg
    PanelProblem-1.jpg
    16 KB · Aufrufe: 72

mihe7

Top Contributor
Ich kann das gerade nicht reproduzieren, weil ich am Linux-Rechner sitze; da funktioniert es problemlos. Gegenfrage: tritt das Problem auch auf, wenn Du die main-Methode umschreibst:
Java:
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            Main_frame frame = new Main_frame();
            //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(300, 100);

            frame.setVisible(true);
        });
    }

Abgesehen davon hat, wenn ich mich recht entsinne, die 10er eh Probleme in Swing (wurden wohl mit dem HDPI-Support eingeschleppt).
 

tueftli

Mitglied
@ mihe7: Das Umschreiben hat leider nichts verändert. :(

Ich hatte heute allerdings die Gelegenheit, das Codebeispiel auf einem anderen Windows-Rechner (Win7, ebenfalls mit Java 10.0.1) laufen zu lassen. Dort traten die Probleme nicht auf. Nachdem das Problem unter Linux anscheinend auch nicht auftritt, bin ich gerade etwas verwirrt, wo denn nun die Ursache liegt...

Kann es etwas mit dem Fensterdesign unter Windows zu tun haben oder mit einem Grafiktreiber?
Bei mir ist ein nVidia Geforce GTX 970M verbaut...
 

tueftli

Mitglied
Ahhh, das könnte die richtige Spur sein! :)
Ich hab jetzt mal meine Umgebungsvariablen (Systemvariable bzw. in Eclipse) gesetzt:

J2D_D3D = false

Das Problem scheint im Augenblick verschwunden, ich werd mal weiter testen...
Direct3D ist damit unter Java deaktiviert. Aber die Ursache dürfte tatsächlich ein Bug sein, oder?
 
X

Xyz1

Gast
Ich würd auch zu wenig Platz bzw ein Anwendungsfehler, sprich Programmierfehler, vermuten.
 

tueftli

Mitglied
Also wenn ich was verbuggt hab, dann nehm ich alles zurück!;)

Ich würd auch zu wenig Platz bzw ein Anwendungsfehler, sprich Programmierfehler, vermuten.

Wo zu wenig Platz? Dass der Button am unteren Fensterrand positioniert ist, wird man wohl kaum als Anwendungsfehler bezeichnen können. Und in dieses rudimentäre Beispiel einen Fehler reinbasteln, der unter Windows auftritt, aber unter Linux nicht...??? Ich weiß nicht! :confused:

Ich persönlich würde die Umgebungsvariablen ja auch am liebsten unangetastet lassen und lieber an meinem Sourcecode etwas verändern! Wenn also jemand eine bessere Idee hat...

Ansonsten würde ich die Schuld mal pro forma an Microsoft abwälzen! :D
 

mihe7

Top Contributor
Was mich betrifft, so meinte ich, ob der Bug bei Java, Nvidia, MS, ... zu suchen ist, wäre die Frage - aber pro forma an MS abwälzen geht für mich in Ordnung :)
 

tueftli

Mitglied
Nun, aus der Umgebungsvariablen J2D_D3D zu schließen, wird der Fehler irgendwo an der Schnittstelle Java/Direct3D zu suchen sein.
Ich gehe mal nicht davon aus, dass Linux irgendwas mit Direct3D zu tun hat...
Läuft das da über OpenGL? Bin da zu wenig bewandert!

Obwohl mir bei meinen weiteren Recherchen aufgefallen ist, dass offenbar gehäuft User mit nVidia betroffen sind.

Ich bin aber mit meinen Recherchen noch nicht so weit vorgedrungen, dass ich herausgefunden hätte, was durch das Deaktivieren von J2D_D3D nun nicht mehr funktioniert.

Ich spechte halt immer noch auf eine inline-Lösung, etwa ein Flag, das man bei der GUI setzen kann, eine Methode, die man überschreiben kann oder Mehrfachpufferung, ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Swing mehrfache Tabelleneinträge entfernen AWT, Swing, JavaFX & SWT 5
J JavaFX Mehrfache Benutzung von Methoden einer Klasse AWT, Swing, JavaFX & SWT 17
Hoppelmann Swing Mehrfache Pausen einer GUI AWT, Swing, JavaFX & SWT 3
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
I GUI, das verschiedene Panels hat (Von Seite zu Seite navigieren) AWT, Swing, JavaFX & SWT 7
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
R Swing panels nebeneinander mit BoxLayout.X_AXIS AWT, Swing, JavaFX & SWT 4
P Swing Panels Wechseln AWT, Swing, JavaFX & SWT 9
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
V AWT Panels überlappen AWT, Swing, JavaFX & SWT 1
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
U Swing Panels im Contentpane durchschalten AWT, Swing, JavaFX & SWT 1
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
S Swing Plätze von 2 panels vertauschen AWT, Swing, JavaFX & SWT 4
T Panels mit Button verbinden AWT, Swing, JavaFX & SWT 3
F Swing Wie verwalte ich meine Panels richtig? AWT, Swing, JavaFX & SWT 2
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
D Stapelung von Panels AWT, Swing, JavaFX & SWT 6
V Swing MouseEvents bei gestapelten Panels AWT, Swing, JavaFX & SWT 2
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
kodela Teil eines Panels als Graphik speichern AWT, Swing, JavaFX & SWT 3
Kenan89 LayoutManager MigLayout Positionierung von Panels AWT, Swing, JavaFX & SWT 4
A Panels in JavaFX zur Laufzeit erzeugen AWT, Swing, JavaFX & SWT 5
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
J Problem mit der Höhe eines Panels AWT, Swing, JavaFX & SWT 11
M Swing JTabbedPane Panels deaktivieren AWT, Swing, JavaFX & SWT 2
S Swing (Nicht) Vergrößern von Panels AWT, Swing, JavaFX & SWT 3
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
B LayoutManager Zeilenweise Anordnung von Panels AWT, Swing, JavaFX & SWT 19
B Panels wechseln auf Knopfdruck AWT, Swing, JavaFX & SWT 17
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
J LayoutManager Panels übereinander AWT, Swing, JavaFX & SWT 3
P Von einem Panel auf die Objekte des anderen Panels zugreifen AWT, Swing, JavaFX & SWT 3
C Aufklappbare Panels AWT, Swing, JavaFX & SWT 2
D Panels Dynamisch zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 2
D Vererbung von Panels AWT, Swing, JavaFX & SWT 8
E Wie Breite und Höhe eines Panels festlegen? AWT, Swing, JavaFX & SWT 5
B Panels stapeln, geht das? AWT, Swing, JavaFX & SWT 7
I 2 Panels übereinander, 1 transparent AWT, Swing, JavaFX & SWT 2
S GridBagLayout Panels AWT, Swing, JavaFX & SWT 2
W Panels vertikal anordnen AWT, Swing, JavaFX & SWT 10
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
F Abschaltbare Panels AWT, Swing, JavaFX & SWT 5
aze Layout auf Teil eines Panels anwenden AWT, Swing, JavaFX & SWT 5
M Swing Alle Elemente eines Panels? AWT, Swing, JavaFX & SWT 9
I Swing Positionieren von Panels mit layoutManager AWT, Swing, JavaFX & SWT 6
B Java Grafiken an bestimmter Positon des Panels anzeigen AWT, Swing, JavaFX & SWT 6
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
K Zwei Panels zentriert anordnen AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
S Buttons, Panels etc. zu einer Teilkomponente hinzufügen AWT, Swing, JavaFX & SWT 5
S mehere panels übereinander AWT, Swing, JavaFX & SWT 2
Z Swing Gif's in panels einfügen AWT, Swing, JavaFX & SWT 11
N Überschneidung von Panels umgehen AWT, Swing, JavaFX & SWT 3
D java.lang.IllegalArgumentException beim Darstellen eines Panels AWT, Swing, JavaFX & SWT 7
T Border eines Panels nicht an der rechten Kante anzeigen AWT, Swing, JavaFX & SWT 7
F name des panels in der ein button liegt rausfinden AWT, Swing, JavaFX & SWT 10
R AWT: Aufteilung mit Panels? AWT, Swing, JavaFX & SWT 2
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
G Ein Frame mit mehreren austauschbaren Panels AWT, Swing, JavaFX & SWT 3
I Applet mit Panels (so richtig, gehts besser?) AWT, Swing, JavaFX & SWT 3
G designfrage zu 2 panels AWT, Swing, JavaFX & SWT 2
hdi zeitgleiches fokusieren von zwei panels AWT, Swing, JavaFX & SWT 2
G 2 Panels, 2 Listener, 1 Problem AWT, Swing, JavaFX & SWT 2
G Im applet auf panels zeichnen AWT, Swing, JavaFX & SWT 9
G Im Applet Panels anzeigen lassen AWT, Swing, JavaFX & SWT 2
G Editierbarkeit aller Komponenten eines Panels AWT, Swing, JavaFX & SWT 5
R Kleine Panels auf einem großen Panel frei platzieren AWT, Swing, JavaFX & SWT 11
G Remove Panels von JFrame AWT, Swing, JavaFX & SWT 5
M Ausrichtung eines Panels AWT, Swing, JavaFX & SWT 7
H Frames oder Panels für mehrere Ansichten? AWT, Swing, JavaFX & SWT 4
M Problem mit Cursor für Panels AWT, Swing, JavaFX & SWT 4
Kidao Mehrer Panels, mit Buttons in einem Frame abwechselnd laden? AWT, Swing, JavaFX & SWT 3
M Hallo Herr Uhres, Frage zu DND_Demo: Ausrichten der Panels:) AWT, Swing, JavaFX & SWT 4
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
O eine Frage zu Panels AWT, Swing, JavaFX & SWT 10
M Problem bei Repaint von Panels AWT, Swing, JavaFX & SWT 2
M Größe des Panels ändern? AWT, Swing, JavaFX & SWT 3
O haben panels von anfang an einen dummen rand? AWT, Swing, JavaFX & SWT 19
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M JTree und Anzeige des entsprechenden Panels AWT, Swing, JavaFX & SWT 5
M JList mit unbestimmter Anzahl Panels füllen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben