在 Java 中更改 ICEPDF 的外观

Change ICEPDF Look And Feel in Java

我使用 IcePDF 作为 PDF 查看器,使用 PropertiesManager 我可以 enable/disable 功能,例如:

    SwingController controller = new SwingController();

    PropertiesManager properties = new PropertiesManager(System.getProperties(),
            ResourceBundle.getBundle(PropertiesManager.DEFAULT_MESSAGE_BUNDLE));

    properties.setBoolean(PropertiesManager.PROPERTY_SHOW_UTILITY_PRINT, false);
    properties.setBoolean(PropertiesManager.PROPERTY_SHOW_TOOLBAR_ANNOTATION, false);
    properties.setBoolean(PropertiesManager.PROPERTY_SHOW_UTILITYPANE_ANNOTATION, false);
    properties.setBoolean(PropertiesManager.PROPERTY_SHOW_TOOLBAR_ROTATE, false);
    properties.setBoolean(PropertiesManager.PROPERTY_SHOW_UTILITY_SAVE, false);
    properties.setBoolean(PropertiesManager.PROPERTY_SHOW_TOOLBAR_FIT, false);

    SwingViewBuilder factory = new SwingViewBuilder(controller, properties);

但我想更改 Windows 外观,简单的 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 行不通。有人可以解决吗?

class org.icepdf.ri.viewer.Launcher 设置在查看器 jar 中找到的查看器 RI 的外观。这是一个较旧的 class,但如果您想覆盖它,它仍会使用 PropertiesManager。你可以用:

preferences.put("application.lookandfeel", "javax.swing.plaf.metal.MetalLookAndFeel");

这是针对 ICEpdf 6 的。3.x 但如果您使用的是早期版本,则可以使用与原始 post 类似的模式。该值可以是 Swing 的任何有效外观。

我终于在我的代码开头添加了:

try {
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
        | UnsupportedLookAndFeelException e) {
  System.err.println("[ err. ] " + e);
}

而且有效。