Ste*_*eod 6 java macos swing java-9 hidpi
我下载并安装了最新的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);
});
}
}
Run Code Online (Sandbox Code Playgroud)
我认为必须有这样一堂课,但我找不到.
仔细阅读 Java 9 源代码后,我的结论是,尽管 Java API 中存在 MultiResolutionImage 类,但 Windows 上的 java.awt.Toolkit 尚未使用它。用于创建 Java 9 MultiResolutionImage 实例的代码位于 OS X 特定的 java.awt.Toolkit 实例上。
我的假设是,作为向 Java 9 添加 HiDPI 支持的一部分,这仍然在 Oracle 的待办事项列表中。
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |