我可以将 Swing 外观应用到 AWT 小部件吗?

Can I apply a Swing look and feel to AWT widgets?

我正在开发混合了 Swing 和 AWT 控件的遗留 Java 桌面应用程序。我当然可以成功地将系统外观应用到 Swing 控件,但是我可以对 AWT 控件做同样的事情吗?如果没有,我能以任何方式实现一些桥梁吗?

基本答案是"no"。 AWT 组件由原生 OS 组件支持,直接(通过 OS 提供的库)或间接(通过基于 AWT 的原生组件)。 AWT 可能会链接到 "older" 组件库,因此某些组件将与当前 OS "look and feel" 不匹配,后者将使用较新的组件库。

无论哪种情况,您都无法影响这些组件的外观(当然也不能通过 Swing 的外观 API)。

好吧,这可能有点听人说,但是 The Story Of Awt"Java's GuiToolkit had to use the native widgets provided by the host window system, whether Windows, Motif, or the Mac. Mimicking the look-and-feel in Java wasn't good enough; it had to be the real native components."