我希望 JOptionPane 对话框使用 Windows 10 图标,但它使用 Windows 7 图标。
这是我的代码:
import javax.swing.*;
public class JOPtest {
public static void main(String[] Args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Test", "Test", JOptionPane.OK_OPTION);
}
}
这会在 Windows 10 上显示以下带有错误图标的消息框:
我宁愿这个消息框带有正确的图标(来自系统错误消息):
看来Java正在使用从System.Drawing.SystemIcons获得的图标,这是你看到的旧图标。
我不是 .Net 专家,但如果我理解正确的话,这个提案将添加一个新的 API,GetStockIcon,它返回现代图标。 (“问题”对话框图标似乎没有 StockIconId。也许是设计疏忽?)
在该版本的 .Net 公开发布并在标准的、完全最新的消费者 Windows 安装上可用之前,您所能做的就是在现有的 .dll 文件中搜索图标。 手动解析 .dll 文件是可能的,但并不容易。 搜索有关格式的文档。
虽然关注细节对于软件工程师来说很重要,但最终用户可能不太关心。 大多数最终用户完全有可能从未注意到新旧对话框图标之间的区别,并且不关心 Java 使用旧的对话框图标。 提取并显示最新的可能不值得。