有没有办法更改swing组件(例如JPanel)的所有实例的默认背景绘画,以使用渐变背景进行绘画?或者我是否需要创建一个使用渐变绘制的JPanel扩展,然后在我的应用程序中使用它而不是JPanel?
答案 0 :(得分:3)
恕我直言,将子类化Swing组件并覆盖其paintComponent
方法来进行渐变绘制会更容易。然后,正如您所说,在整个应用程序中使用此自定义组件。
使用UI属性可能会很棘手,因为它们可能在所有LaF中不一致。
答案 1 :(得分:0)
目前还不完全清楚你想要的范围。你的意思是 class (所以所有的JPanel实例都遵循新的绘制方案),或者你的意思是容器中的所有组件(例如Frame中的所有内容)?
根据组件类,可以执行此操作,可以挂钩的位置是外观,在组件实例库中,可以使用paintComponent()方法,或者如果需要替换标准通过在创建组件后提供自己的UI类(查看Component.setUI),您无法覆盖该方法的现有组件的外观,因为您无法对其进行控制。
除了覆盖paintComponent方法之外,两者都不易实现。对于大多数应用程序,简单的方法是最好的:)