我下载并安装了最新的 Java 9 早期访问版本,并且很高兴地发现 Windows 上的 Java Swing 应用程序现在可以以正确的大小呈现组件。使用 HiDPI 显示器的客户不再需要以预期宽度和高度的一半使用我的应用程序。
但是我注意到在我的 Swing 应用程序中,我自己的图标只是被缩放为宽度和高度的两倍,使它们看起来锯齿状。
我确实拥有一整套正常大小(例如 foobar.png)和双倍宽度/高度(例如 foobar@2x.png)的所有图标。我使用 Apple 命名约定。
我将如何让 Java 9 在可用时轻松查找和使用更高分辨率版本的图像,而无需为此手动编码?
代码示例总是让问题更清晰,那么 Java 9 是否有一个多分辨率图标类,我可以使用它来编译和运行以下代码?
import javax.swing.*;
public class ScratchSpace {
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("I work in HiDPI!");
// can I replace the following line with some magical new method that automatically loads the same icon at multiple resolutions
// so that Swing chooses the correct one when rendering, depending on the current scale of the current display?
Icon icon = new IconWithMultipleSizes("foobar.png");
JLabel label = new JLabel("I'm a label with an icon.", icon, SwingConstants.LEFT);
frame.setContentPane(label);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
}
}
我想一定有这样的课,但我找不到。