模块 java.desktop

接口 UIResource

所有已知的实现类:
ActionMapUIResource , BasicBorders.ButtonBorder , BasicBorders.FieldBorder , BasicBorders.MarginBorder , BasicBorders.MenuBarBorder , BasicBorders.RadioButtonBorder , BasicBorders.RolloverButtonBorder , BasicBorders.SplitPaneBorder , BasicBorders.ToggleButtonBorder , BasicComboBoxEditor.UIResource , BasicComboBoxRenderer.UIResource , BasicTextUI.BasicCaret , BasicTextUI.BasicHighlighter , BorderUIResource , BorderUIResource.BevelBorderUIResource , BorderUIResource.CompoundBorderUIResource , BorderUIResource.EmptyBorderUIResource , BorderUIResource.EtchedBorderUIResource , BorderUIResource.LineBorderUIResource , BorderUIResource.MatteBorderUIResource , BorderUIResource.TitledBorderUIResource , ColorUIResource , ComponentInputMapUIResource , DefaultListCellRenderer.UIResource , DefaultMenuLayout , DefaultTableCellRenderer.UIResource , DimensionUIResource , FontUIResource , IconUIResource , InputMapUIResource , InsetsUIResource , JScrollPane.ScrollBar , MetalBorders.ButtonBorder , MetalBorders.Flush3DBorder , MetalBorders.InternalFrameBorder , MetalBorders.MenuBarBorder , MetalBorders.MenuItemBorder , MetalBorders.OptionDialogBorder , MetalBorders.PaletteBorder , MetalBorders.PopupMenuBorder , MetalBorders.RolloverButtonBorder , MetalBorders.ScrollPaneBorder , MetalBorders.TextFieldBorder , MetalBorders.ToggleButtonBorder , MetalBorders.ToolBarBorder , MetalCheckBoxIcon , MetalComboBoxEditor.UIResource , MetalIconFactory.PaletteCloseIcon , ScrollPaneLayout.UIResource

public interface UIResource
此接口用于标记由 ComponentUI 委托创建的对象。 ComponentUI.installUI()ComponentUI.uninstallUI() 方法可以使用此接口来决定属性值是否已被覆盖。例如,JList cellRenderer 属性由 BasicListUI.installUI() 初始化,仅当其初始值为 null 时:
 if (list.getCellRenderer() == null) {
   list.setCellRenderer((ListCellRenderer)(UIManager.get("List.cellRenderer")));
 }
 
在 uninstallUI() 时,如果其值为 UIResource 的实例,我们将属性重置为 null:
 if (list.getCellRenderer() instanceof UIResource) {
   list.setCellRenderer(null);
 }
此模式适用于除 java.awt.Component 属性字体、前景和背景之外的所有属性。如果这些属性之一未初始化,或显式设置为 null,则其容器将提供该值。因此,当调用 installUI() 以动态更改组件外观时,"== null" 是不可靠的。所以在 installUI() 时我们检查当前值是否是 UIResource:
 if (!(list.getFont() instanceof UIResource)) {
   list.setFont(UIManager.getFont("List.font"));
 }
 
参见: