Fixed swing border/margins for menus/entries

This commit is contained in:
nathan 2016-09-28 18:35:25 +02:00
parent 4b10ff9eac
commit de8d1d8b07
2 changed files with 19 additions and 2 deletions

View File

@ -16,6 +16,7 @@
package dorkbox.systemTray.swing; package dorkbox.systemTray.swing;
import java.awt.Insets;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.io.File; import java.io.File;
@ -28,6 +29,20 @@ import dorkbox.util.SwingUtil;
public public
class SwingMenuEntryItem extends SwingMenuEntry { class SwingMenuEntryItem extends SwingMenuEntry {
private static
class AdjustedJMenuItem extends JMenuItem {
@Override
public
Insets getMargin() {
Insets margin = super.getMargin();
if (margin != null) {
margin.set(2, -2, 2, 4);
}
return margin;
}
}
private final ActionListener swingCallback; private final ActionListener swingCallback;
private volatile boolean hasLegitIcon = false; private volatile boolean hasLegitIcon = false;
@ -36,7 +51,7 @@ class SwingMenuEntryItem extends SwingMenuEntry {
public public
// this is ALWAYS called on the EDT. // this is ALWAYS called on the EDT.
SwingMenuEntryItem(final SystemTrayMenuAction callback, final SwingSystemTray systemTray) { SwingMenuEntryItem(final SystemTrayMenuAction callback, final SwingSystemTray systemTray) {
super(new JMenuItem(), systemTray); super(new AdjustedJMenuItem(), systemTray);
this.callback = callback; this.callback = callback;
swingCallback = new ActionListener() { swingCallback = new ActionListener() {

View File

@ -22,6 +22,7 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
import javax.swing.border.EmptyBorder;
import dorkbox.util.DelayTimer; import dorkbox.util.DelayTimer;
import dorkbox.util.Property; import dorkbox.util.Property;
@ -50,7 +51,8 @@ class SwingSystemTrayMenuPopup extends JPopupMenu {
SwingSystemTrayMenuPopup() { SwingSystemTrayMenuPopup() {
super(); super();
setFocusable(true); setFocusable(true);
// setBorder(new BorderUIResource.EmptyBorderUIResource(0,0,0,0)); // setBorder(new BorderUIResource.EmptyBorderUIResource(0, 0, 0, 0)); // borderUI resource border type will get changed!
setBorder(new EmptyBorder(1, 1, 1, 1));
this.timer = new DelayTimer("PopupMenuHider", true, new Runnable() { this.timer = new DelayTimer("PopupMenuHider", true, new Runnable() {