public interface UIResource
ComponentUI.installUI() メソッドおよび ComponentUI.uninstallUI() メソッドは、このインタフェースを使って、プロパティーの値がオーバーライドされたかどうかを判定できます。たとえば、JList の cellRenderer プロパティーは、その初期値が null の場合に限り BasicListUI.installUI() によって初期化されます。
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 のプロパティーのフォント、フォアグラウンド、およびバックグラウンド以外のすべてのプロパティーに適用されます。もし、これらのプロパティーのうちの 1 つが初期化されていない場合、あるいは明示的に null に設定されている場合には、そのコンテナが値を提供します。こうした理由により、コンポーネントの Look & Feel を動的に変更するために installUI() が呼び出された場合、"== null" を信頼することはできません。したがって、installUI() 実行時には、現在の値が UIResource であるかどうかを調べます。
if (!(list.getFont() instanceof UIResource)) {
list.setFont(UIManager.getFont("List.font"));
}
ComponentUI バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.