【问题标题】:How to give the JFrame a different look-and-feel from other components (Multiplexing)?如何赋予 JFrame 与其他组件不同的外观(多路复用)?
【发布时间】:2012-02-03 07:04:07
【问题描述】:

这个方法

UIManager.setLookAndFeel(new SubstanceCeruleanLookAndFeel());

为整个应用设置 L&F。我如何结合这个然后为JFrame设置不同的L&F?

编辑

我在Multiplexing Look and Feels 上找到了这篇文章。这究竟是如何工作的?我找不到任何例子。

【问题讨论】:

  • 为什么?无论如何,根本不要 - Swing 旨在支持每个应用程序的单个 LAF。通常,混合会导致不可预测的视觉效果和行为。正如@trashgod 已经指出的那样,JFrame 不是 JComponent,也就是说,它没有要设置的 ui 委托 .. LAF 唯一可能接管的是框架装饰,请参阅 JFrame。 setDefaultLookAndFeelDecoration
  • 那么,我可以在整个应用程序中使用一个 laf,并使用另一个 laf 装饰框架吗?或相反亦然;使用一个 laf,然后告诉除框架装饰之外的所有组件使用另一个 laf?这可能吗?我没有创建自己的 laf 的技能,所以我想知道有没有办法结合 lafs 让东西看起来不错。

标签: java swing user-interface look-and-feel


【解决方案1】:

您可以轻松地覆盖 JComponent 的 UI 默认值;有一个示例 here 说明了更改 JTree 图标。不幸的是,JFrame 不是JComponent;它没有 UI 委托,其装饰由主机操作系统提供。

如需更具体的指导,您需要阐明您想要完成的任务。

另见Validation overlays using multiplex look and feel

【讨论】:

  • 感谢您的回复。但是带有实质 laf 的框架具有自定义外观,我的意思是图标化和关闭按钮,一些 laf 的窗口带有圆角。我能以某种方式从一个 laf 获取这个,然后添加到另一个吗?
  • @bunnyjesse112 不 - 它是 LAF 装饰或提供的操作系统。你到底想达到什么目标?
【解决方案2】:

这是不可能的,外观和感觉是应用程序范围内的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多