Skip to content

Commit 7793a77

Browse files
authored
Merge pull request #63 from vincenzopalazzo/mousehovereffect
Added mouse Hover effect for TabbedPane
2 parents e75e03d + 4a3fccd commit 7793a77

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

src/main/java/mdlaf/components/tabbedpane/MaterialTabbedPaneUI.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,18 @@
77
import javax.swing.UIManager;
88
import javax.swing.plaf.ComponentUI;
99
import javax.swing.plaf.basic.BasicTabbedPaneUI;
10-
import java.awt.Graphics;
11-
import java.awt.Rectangle;
10+
import java.awt.*;
11+
import java.awt.event.MouseEvent;
12+
import java.awt.event.MouseMotionListener;
1213

1314
public class MaterialTabbedPaneUI extends BasicTabbedPaneUI {
1415

1516
public static ComponentUI createUI (JComponent c) {
1617
return new MaterialTabbedPaneUI ();
1718
}
1819

20+
private JComponent component;
21+
1922
@Override
2023
public void installUI (JComponent c) {
2124
super.installUI (c);
@@ -30,6 +33,8 @@ public void installUI (JComponent c) {
3033
darkShadow = UIManager.getColor ("TabbedPane.darkShadow");
3134
shadow = UIManager.getColor ("TabbedPane.shadow");
3235
lightHighlight = UIManager.getColor ("TabbedPane.highlight");
36+
37+
component = tabbedPane;
3338
}
3439

3540
@Override
@@ -58,5 +63,35 @@ protected void paintFocusIndicator (Graphics g, int tabPlacement, Rectangle[] re
5863
protected void paintTab (Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect) {
5964
// for some reason tabs aren't painted properly by paint()
6065
super.paintTab (MaterialDrawingUtils.getAliasedGraphics (g), tabPlacement, rects, tabIndex, iconRect, textRect);
66+
component.addMouseMotionListener(new MouseHoverTab(rects));
67+
}
68+
69+
private class MouseHoverTab implements MouseMotionListener {
70+
71+
private Rectangle[] rectangles;
72+
73+
public MouseHoverTab(Rectangle[] rectangles) {
74+
this.rectangles = rectangles;
75+
}
76+
77+
@Override
78+
public void mouseDragged(MouseEvent e) {
79+
}
80+
81+
@Override
82+
public void mouseMoved(MouseEvent e) {
83+
JComponent mouseGenerate = (JComponent) e.getSource();
84+
if (!mouseGenerate.isEnabled()) {
85+
return;
86+
}
87+
Point point = e.getPoint();
88+
for (Rectangle r : rectangles) {
89+
if (r.contains(point)) {
90+
mouseGenerate.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
91+
return;
92+
}
93+
}
94+
mouseGenerate.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
95+
}
6196
}
6297
}

0 commit comments

Comments
 (0)