LookAndFeel Rollover Effekt bei JTabbedPane deaktivieren (Nimbus)

aleister

Mitglied
Hallo,


Ich möchte bei einer JTabbedPane mit Nimbus look-and-feel den rollover-Effect deaktivieren. D.h. wenn man mit dem Mauszeiger über einen Tab fährt, soll dieser nicht seine Farbe ändern.

Ich habe das für den gerade ausgewählten Tab schon hinbekommen:
Java:
UIManager.put("TabbedPane.isTabRollover", false);

Bei den nichtausgewählten Tabs ist der Rollover Effekt danach aber noch vorhanden.

Ich habe mir überlegt, dass ich doch einfach den Rollover-Hintergrund mit dem Standart Hintergrund überschreibe:
Java:
Object o = UIManager.get("TabbedPane:TabbedPaneTab[Enabled].backgroundPainter");		
UIManager.put("TabbedPane:TabbedPaneTab[Enabled+MouseOver].backgroundPainter", o);

Das funktioniert aber leider auch nicht.
Hat jemand eine Idee, wie man das am bessten hinbekommt?

Hier ist ein Link zu den Key/Werten für Nimbus:
Nimbus Defaults (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)
 
Zuletzt bearbeitet:

hdi

Top Contributor
Hm keine Ahnung warum das nicht geht. Du kannst zwar den MouseMotionListener vom TabbedPane runternehmen, dann ist der Mouseover Effekt weg. Die Frage ist nur, was dann noch so alles weg ist :D Zur Not ziehst du dir den Source Code vom MouseMotionListener, und bastelst ihn nach nur eben ohne den Einfärb-Effekt.

edit: Aber wart erstmal ab was andere Leute sagen. Mit solchen UI-Settings hab ich nich viel Erfahrung.
 
Zuletzt bearbeitet:

aleister

Mitglied
Ich habe den MouseMotionListener mal entfernt. Dadurch wurde der Effekt teilweise unterdrückt. Bei jedem 3-4mal werden die Tabs trotzdem noch anders dargestellt :(
 

aleister

Mitglied
Ja, aber den kann ich ja nicht entfernen, weil da auch MouseClicked drin ist, was ja benötigt wird, um die Tabs umzuschalten.


Der Rollover-Effekt stört eigentlich nur, weil auf den Tabs weitere Components drauf liegen, die MouseEvents abfangen. Dadurch erscheint der Rollover Effekt nur, wenn der Mauszeiger über einer leeren Stelle des Tabs liegt, nicht aber wenn der Mauszeiger über einem Component ist, der auf einem Tab liegt.

Wenn es also eine Möglichkeit gäbe, die MouseEvents der darüberligenden Components an die TabbedPane weiterzuleiten, wäre das auch eine akzeptabele Lösung.
 
Zuletzt bearbeitet:

hdi

Top Contributor
Andere Idee: Lass dir mal ausgeben was

Code:
Object o = UIManager.get("TabbedPane:TabbedPaneTab[Enabled].backgroundPainter");

überhaupt ist: o.getClass()

Evtl ist der Renderer für all die Optionen immer ein und der selbe, nur werden intern halt die Flags für die verschiedenen Farben umgestellt. Rasufinden was das für ne Instanz ist. Eventuell kannst du da dann was dran drehen. Oder wieder in den Source Code kucken und schauen ob du was ähnliches nachbauen kannst.
 

aleister

Mitglied
Wo bekomme ich den Quellcode von com.sun.java.swing.plaf.nimbus.* denn her? Dann könnte ich TabbedPaneTabbedPaneTabPainter ja erweitern
 

hdi

Top Contributor
Hm das wird so wohl nix. Was da drin steckt ist:

Code:
private static final class LazyPainter implements UIDefaults.LazyValue

Eine private inner class von NimbusDefaults. Keine Chance, da dran zu kommen.

Aber ich hab gesehen dass für jeden Map-Eintrag ein neuer LazyPainter erzeugt wird. Meine Vermutung, dass es vllt ein und die selbe Instanz ist, ist damit revidiert. Sprich eigentlich müsste dein ursprünglicher Code schon richtig sein..

Wenn es also eine Möglichkeit gäbe, die MouseEvents der darüberligenden Components an die TabbedPane weiterzuleiten, wäre das auch eine akzeptabele Lösung.
Hab den Beitrag grad erst jetzt gesehen :oops: Ich denke das sollte machbar sein, und sogar recht easy.. Zugriff auf die Mouse(Motion)Listener der TabbedPane hast du über den Getter. Und deren Methoden sind public. Gut, kann sein dass wir mal reinschauen müssen was für ein Event da standardmässig gefeuert wird, um ein passendes zusammenzubauen. Schau dir den Source mal an von JTabbedPane. Falls du Eclipse nutzt kannst du den integrieren, STRG-Taste gedrückt halten, dann über den Datentyp JTabbedPane gehen und klicken -> Open Implementation. Dann musst du nur aus deinem JDK-Installationsordner die src.zip verlinken und hast den gesamten API-Source in Eclipse.

Ansonsten:
Java > Open Source Codes > javax > swing > JTabbedPane _ Java API By Example, From Geeks To Geeks.

(Achtung keine Ahnung ob das jetzt die aktuellste Version ist bzw ob es da Updates gab)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R JButton -> erst sichtbar nach rollover AWT, Swing, JavaFX & SWT 9
H JToolBar Rollover AWT, Swing, JavaFX & SWT 2
C Probleme mit Rollover-Methode AWT, Swing, JavaFX & SWT 4
I JavaFX Hover-Effekt bei Button AWT, Swing, JavaFX & SWT 11
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
J Teiltransparenter JFrame mit Blur-Effekt AWT, Swing, JavaFX & SWT 2
L JavaFX Custom control mit Hover Effekt AWT, Swing, JavaFX & SWT 2
G JavaFX Button gedrückt "Effekt" AWT, Swing, JavaFX & SWT 2
E Problem mit Mouseover-Effekt AWT, Swing, JavaFX & SWT 2
E Swing Tutorial Buch blättern Effekt gesucht AWT, Swing, JavaFX & SWT 2
Dit_ Buttons Mouse-Over Effekt AWT, Swing, JavaFX & SWT 8
S Komischer Effekt bei Laf AWT, Swing, JavaFX & SWT 6
V Mouseover-Effekt bei JButton abschalten? AWT, Swing, JavaFX & SWT 2
K L a y o u t-Testprogramm mit seltsamen Effekt AWT, Swing, JavaFX & SWT 7
R Wie geht dieser Effekt? AWT, Swing, JavaFX & SWT 15
C 3D-Effekt bei Buttons AWT, Swing, JavaFX & SWT 3
foobar 3D-Effekt AWT, Swing, JavaFX & SWT 3
T Seltsamer Effekt bei repaint() AWT, Swing, JavaFX & SWT 4
R JTextField - setBackground - kein Effekt AWT, Swing, JavaFX & SWT 5
BabySuna darstellungsprobleme mit JTabbedPane und GridBagLayout AWT, Swing, JavaFX & SWT 8
I JTabbedPane mit DnD, [x]-Schaltfläche, [+]-Schaltfläche usw. AWT, Swing, JavaFX & SWT 1
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
B JTabbedPane Tabs anordnen AWT, Swing, JavaFX & SWT 2
D JTabbedPane GUI Experimente AWT, Swing, JavaFX & SWT 4
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
L JTabbedPane mit for Schleife aufbauen AWT, Swing, JavaFX & SWT 4
J JTabbedPane Vollbild wenn Tabwechsel AWT, Swing, JavaFX & SWT 1
B StateChangeListener auf JTabbedPane AWT, Swing, JavaFX & SWT 5
F jTabbedPane Tabwechsel deaktivieren AWT, Swing, JavaFX & SWT 2
J JTabbedPane: close Button Problem AWT, Swing, JavaFX & SWT 2
J JTabbedPane: table in new tab: tooltip benutzt die column-widths von table in erstem geöffneten tab AWT, Swing, JavaFX & SWT 17
M JTabbedPane verändern mit Nimbus Look and Feel AWT, Swing, JavaFX & SWT 1
F JTabbedPane bestimmten Tab ansprechen AWT, Swing, JavaFX & SWT 13
F JTabbedPane mit Button zum Hinzufügen eines neuen Tabs AWT, Swing, JavaFX & SWT 6
BRoll JTabbedPane setTitleAt OutOfBoundsExc AWT, Swing, JavaFX & SWT 4
K JTabbedPane Tab Markierung / Selektion AWT, Swing, JavaFX & SWT 4
B Custom JTabbedPane-Tab-Design AWT, Swing, JavaFX & SWT 2
L JTabbedPane Closebutton integrieren AWT, Swing, JavaFX & SWT 6
J JTabbedPane Grafik unterhalb der Tabs AWT, Swing, JavaFX & SWT 3
H Swing JTabbedPane: Zusätzliche Buttons neben den Tabs AWT, Swing, JavaFX & SWT 7
V JTabbedPane Eingefügte Labels verschoben AWT, Swing, JavaFX & SWT 2
M Swing JTabbedPane: Tab-Elemente anpassen AWT, Swing, JavaFX & SWT 3
S Swing JTabbedPane: Nur nach ButtonClick und nicht nach Click auf Tab ins nächste Tab wechseln AWT, Swing, JavaFX & SWT 2
P JTabbedPane per Menuitem erstellen AWT, Swing, JavaFX & SWT 20
K Swing JTabbedPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 19
B Swing JTabbedPane in JApplet -> Reiter bei Aktualisation mehrmals zu sehen AWT, Swing, JavaFX & SWT 3
M JTabbedPane -> setSelectedIndex funzt nicht AWT, Swing, JavaFX & SWT 3
D Bestimmtes JPanel innerhalb eines JTabbedPane ansprechen AWT, Swing, JavaFX & SWT 2
M jtabbedpane aktivieren/deaktivieren AWT, Swing, JavaFX & SWT 13
J Swing Letzten Tab einer JTabbedPane ermitteln AWT, Swing, JavaFX & SWT 6
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
B Hilfe zu JTable und JTabbedPane AWT, Swing, JavaFX & SWT 18
hdi LookAndFeel Nimbus BUG mit JTabbedPane?! AWT, Swing, JavaFX & SWT 5
hdi Swing Problem mit JTabbedPane AWT, Swing, JavaFX & SWT 2
T Inhalt von einem Tab an JTabbedPane größe ausrichten? AWT, Swing, JavaFX & SWT 2
S JTabbedPane Problem AWT, Swing, JavaFX & SWT 3
S JTabbedPane AWT, Swing, JavaFX & SWT 4
D JTabbedPane mit Eventlistener versehen? AWT, Swing, JavaFX & SWT 9
M Swing JTabbedPane Panels deaktivieren AWT, Swing, JavaFX & SWT 2
K JTabbedPane setName() für jedes Tab AWT, Swing, JavaFX & SWT 2
G JTabbedPane - Länge der Reiter beeinflussen? AWT, Swing, JavaFX & SWT 9
G Swing JTabbedPane Was für ein Border wird da um die Tabs gezeichnet? AWT, Swing, JavaFX & SWT 6
S Swing Komponentengröße in JTabbedPane AWT, Swing, JavaFX & SWT 7
M Ein Tab eine JTabbedPane durch Button Druck öffen AWT, Swing, JavaFX & SWT 2
Y LookAndFeel JTabbedPane: Tab-Farbe mit Nimbus setzen AWT, Swing, JavaFX & SWT 3
M CloseButton bei JTabbedPane AWT, Swing, JavaFX & SWT 4
P Swing JTabbedPane mit JButton einen anderen Tab anzeigen AWT, Swing, JavaFX & SWT 9
D JTabbedPane zentrieren AWT, Swing, JavaFX & SWT 2
S Swing JTabbedPane: Inhalt soll oben links anfangen AWT, Swing, JavaFX & SWT 6
Mike90 JTabbedPane Größe anpassen AWT, Swing, JavaFX & SWT 17
F JTabbedPane Reiter breite AWT, Swing, JavaFX & SWT 4
B JTabbedPane mit Enumeration dynamisch füllen AWT, Swing, JavaFX & SWT 5
D Swing Tab in JTabbedPane AWT, Swing, JavaFX & SWT 5
A JFrame > JTabbedPane > JPanel > addKeyListener AWT, Swing, JavaFX & SWT 18
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
M JTabbedPane - Tab auslesen AWT, Swing, JavaFX & SWT 2
H Swing Problem mit JTabbedPane AWT, Swing, JavaFX & SWT 9
D jtabbedpane Event VOR tab-Wechsel AWT, Swing, JavaFX & SWT 3
S Border von JTabbedpane-Tab? AWT, Swing, JavaFX & SWT 3
M JTabbedPane Docable? AWT, Swing, JavaFX & SWT 3
L Swing JTabbedPane - Index vom Tab AWT, Swing, JavaFX & SWT 3
D Swing JTabbedPane, TabComponent & Popup AWT, Swing, JavaFX & SWT 4
F Borders von JTabbedPane und JScrollPane AWT, Swing, JavaFX & SWT 5
W JTabbedPane Größe anpassen AWT, Swing, JavaFX & SWT 4
G Swing JTabbedPane vergrößern AWT, Swing, JavaFX & SWT 2
H Swing Register (jTabbedPane) dynamisch hinzufügen? AWT, Swing, JavaFX & SWT 7
D Tabs von JTabbedPane stylen AWT, Swing, JavaFX & SWT 6
U JTabbedPane: Layout-Probleme bei addTab zur Laufzeit AWT, Swing, JavaFX & SWT 2
1 JTabbedPane Tab ausdehnen AWT, Swing, JavaFX & SWT 3
F Swing JTabbedPane: Zur Laufzeit die Tabreihenfolge ändern AWT, Swing, JavaFX & SWT 2
M Elemente in JTabbedPane platzieren AWT, Swing, JavaFX & SWT 7
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
K LookAndFeel JTabbedPane mit Icon und CloseButton AWT, Swing, JavaFX & SWT 2
D Swing Probleme bei mit JTabbedPane.getChildren() AWT, Swing, JavaFX & SWT 4
I Swing Randnutzung bei JTabbedPane.LEFT AWT, Swing, JavaFX & SWT 2
ABstraCT JTabbedPane - click wird nicht immer ausgeführt ! AWT, Swing, JavaFX & SWT 10
P JTabbedPane und fill? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben