有没有一种方法可以更改所有swing组件实例(例如JPanel)的默认背景绘制,以使用渐变背景进行绘制?还是我需要创建一个扩展JPanel的类来实现渐变绘制,并且在我的应用程序中到处使用它而不是JPanel?
有没有一种方法可以更改所有swing组件实例(例如JPanel)的默认背景绘制,以使用渐变背景进行绘制?还是我需要创建一个扩展JPanel的类来实现渐变绘制,并且在我的应用程序中到处使用它而不是JPanel?
在我看来,更容易的方法是继承 Swing 组件并重写其 paintComponent
方法以进行渐变绘制。然后,如你所说,可以在整个应用程序中使用此自定义组件。
使用 UI 属性可能会很棘手,因为它们在所有 LaF 上可能不一致。
JComponent
会更好。 - Moonbeam您的意图并不是完全清晰的。您是指通过 class(这样所有 JPanel 实例都遵循新的绘制方案),还是指一个容器中的 所有 组件(例如 Frame 中的所有内容)?
根据组件类别,有可能实现这一点,可以在外观和感觉上进行钩子操作,或者基于每个组件实例,使用 paintComponent() 方法,或者如果您需要替换现有组件的标准外观,但无法覆盖该方法,因为您无法控制它,则可以在组件创建后提供自己的 UI 类(请参阅 Component.setUI)。
除了覆盖 paintComponent 方法之外,其他方法都不容易实现。对于大多数应用程序来说,简单的方法是最好的 :)