From cd51b756dd0593e88312a35fc5ad180b333de6e5 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 25 Jan 2017 21:49:55 +0100 Subject: [PATCH] Added ability for swing menu's to change size in scale with the display. --- src/dorkbox/systemTray/swingUI/AdjustedJMenu.java | 13 +++++++++++++ .../systemTray/swingUI/AdjustedJMenuItem.java | 12 ++++++++++++ src/dorkbox/systemTray/util/ImageUtils.java | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/dorkbox/systemTray/swingUI/AdjustedJMenu.java b/src/dorkbox/systemTray/swingUI/AdjustedJMenu.java index 355f988..c8d1242 100644 --- a/src/dorkbox/systemTray/swingUI/AdjustedJMenu.java +++ b/src/dorkbox/systemTray/swingUI/AdjustedJMenu.java @@ -15,14 +15,27 @@ */ package dorkbox.systemTray.swingUI; +import java.awt.Font; import java.awt.Insets; import javax.swing.JMenu; import javax.swing.JPopupMenu; import javax.swing.border.EmptyBorder; +import dorkbox.systemTray.SystemTray; +import dorkbox.systemTray.util.ImageUtils; + class AdjustedJMenu extends JMenu { + // get the scale (and multiply it to our font size) to get the new font size + private static int scale = ImageUtils.ENTRY_SIZE / SystemTray.DEFAULT_MENU_SIZE; + AdjustedJMenu() { + super(); + + Font font = getFont(); + int size = font.getSize(); + size = size * scale; + setFont(new Font(font.getName(), font.getStyle(), size)); } @Override diff --git a/src/dorkbox/systemTray/swingUI/AdjustedJMenuItem.java b/src/dorkbox/systemTray/swingUI/AdjustedJMenuItem.java index 4adb7d4..29d2ea9 100644 --- a/src/dorkbox/systemTray/swingUI/AdjustedJMenuItem.java +++ b/src/dorkbox/systemTray/swingUI/AdjustedJMenuItem.java @@ -15,13 +15,25 @@ */ package dorkbox.systemTray.swingUI; +import java.awt.Font; import java.awt.Insets; import javax.swing.JMenuItem; +import dorkbox.systemTray.SystemTray; +import dorkbox.systemTray.util.ImageUtils; + class AdjustedJMenuItem extends JMenuItem { + // get the scale (and multiply it to our font size) to get the new font size + private static int scale = ImageUtils.ENTRY_SIZE / SystemTray.DEFAULT_MENU_SIZE; + AdjustedJMenuItem() { super(); + + Font font = getFont(); + int size = font.getSize(); + size = size * scale; + setFont(new Font(font.getName(), font.getStyle(), size)); } @Override diff --git a/src/dorkbox/systemTray/util/ImageUtils.java b/src/dorkbox/systemTray/util/ImageUtils.java index 3371b1d..7eea44c 100644 --- a/src/dorkbox/systemTray/util/ImageUtils.java +++ b/src/dorkbox/systemTray/util/ImageUtils.java @@ -138,7 +138,7 @@ class ImageUtils { // casting around for rounding/math stuff // *2 because we want a 2x scale to be 64, not 32. trayScalingFactor = (int) (((double) dpiX) / ((double) 96)) * 2; - // we don't want to scale the size of the menu, because java/swing takes care of scaling for us. + menuScalingFactor = trayScalingFactor; }