モジュール java.desktop
パッケージ javax.swing.plaf.basic

クラスBasicComboBoxUI

  • 直系の既知のサブクラス:
    MetalComboBoxUI, SynthComboBoxUI


    public class BasicComboBoxUI
    extends ComboBoxUI
    JComboBoxの基本UI実装です。

    コンボボックスは、複合コンポーネント、つまり多くの単純なコンポーネントの集合です。 このクラスは、コンボボックスとコンボ・ボックス・モデル上のリスナーを作成し、管理します。 これらのリスナーは、コンボボックスの状態とプロパティにおける変更に応じて、ユーザー・インタフェースを更新します。

    すべてのイベント処理は、createxxxListener()の各メソッド、および内部クラスを使用して作成されたリスナー・クラスにより処理されます。 このクラスの動作を変更するには、createxxxListener()の各メソッドをオーバーライドした上で、独自のイベント・リスナーを提供するか、このクラスで提供されているイベント・リスナーからサブクラス化します。

    特定のアクションを追加するには、installKeyboardActionsをオーバーライドして、KeyStrokeバインディングに応じてアクションを追加します。 記事「キー・バインディングの使用方法」を参照してください。

    • フィールドの詳細

      • comboBox

        protected JComboBox<Object> comboBox
        JComboBoxのインスタンス。
      • hasFocus

        protected boolean hasFocus
        このprotectedフィールドは実装固有のものです。 直接のアクセスやオーバーライドはしないでください。
      • listBox

        protected JList<Object> listBox
        このリストは、現在のアイテムをコンボ・ボックスに描画するためのものです。
      • currentValuePane

        protected CellRendererPane currentValuePane
        コンボ・ボックスで現在選択されているアイテムを描画するために使用されます。 ポップアップ・レンダリングとは関係ありません。
      • popup

        protected ComboPopup popup
        ポップアップを表示するために使用されるComboPopupの実装。
      • editor

        protected Component editor
        @{code ComboBoxEditor} が編集に使用するコンポーネント。
      • arrowButton

        protected JButton arrowButton
        ポップアップを起動する矢印ボタン。
      • keyListener

        protected KeyListener keyListener
        このprotectedフィールドは実装固有のものです。 直接のアクセスやオーバーライドはしないでください。 代わりに、リスナー作成メソッドをオーバーライドしてください。
        関連項目:
        createKeyListener()
      • focusListener

        protected FocusListener focusListener
        このprotectedフィールドは実装固有のものです。 直接のアクセスやオーバーライドはしないでください。 代わりに、リスナー作成メソッドをオーバーライドしてください。
        関連項目:
        createFocusListener()
      • propertyChangeListener

        protected PropertyChangeListener propertyChangeListener
        このprotectedフィールドは実装固有のものです。 直接のアクセスやオーバーライドはしないでください。 代わりに、リスナー作成メソッドをオーバーライドしてください。
        関連項目:
        createPropertyChangeListener()
      • itemListener

        protected ItemListener itemListener
        このprotectedフィールドは実装固有のものです。 直接のアクセスやオーバーライドはしないでください。 代わりに、リスナー作成メソッドをオーバーライドしてください。
        関連項目:
        createItemListener()
      • popupMouseListener

        protected MouseListener popupMouseListener
        MouseListenerはイベントを待ち受けます。
      • popupMouseMotionListener

        protected MouseMotionListener popupMouseMotionListener
        MouseMotionListenerはイベントを待ち受けます。
      • popupKeyListener

        protected KeyListener popupKeyListener
        KeyListenerはイベントを待ち受けます。
      • listDataListener

        protected ListDataListener listDataListener
        このprotectedフィールドは実装固有のものです。 直接のアクセスやオーバーライドはしないでください。 代わりに、リスナー作成メソッドをオーバーライドしてください。
        関連項目:
        createListDataListener()
      • isMinimumSizeDirty

        protected boolean isMinimumSizeDirty
        最小優先サイズを再計算するためのフラグ。
      • cachedMinimumSize

        protected Dimension cachedMinimumSize
        キャッシュされた最小優先サイズ。
      • squareButton

        protected boolean squareButton
        コンボボックス・ボタンを正方形にするべきかどうかを示します。 正方形の場合は、幅と高さが等しくなり、両方ともコンボから適切なイン・セットを引いた高さに設定されます。
        導入されたバージョン:
        1.7
      • padding

        protected Insets padding
        これらのイン・セットは、「選択された」項目をコンボボックスに配置し、ペイントする際に、セル・レンダラ周囲のパディングとして機能します。 これらのイン・セットは、セル・レンダラによって指定されたイン・セットに追加されます。
        導入されたバージョン:
        1.7
    • コンストラクタの詳細

      • BasicComboBoxUI

        public BasicComboBoxUI​()
    • メソッドの詳細

      • createUI

        public static ComponentUI createUI​(JComponent c)
        BasicComboBoxUIの新しいインスタンスを構築します。
        パラメータ:
        c - コンポーネント
        戻り値:
        BasicComboBoxUIの新しいインスタンス
      • installUI

        public void installUI​(JComponent c)
        クラスからコピーされた説明: ComponentUI
        指定されたコンポーネントをLook & Feelに応じて適切に構成します。 このメソッドは、ComponentUIインスタンスが、指定されたコンポーネントのUI委譲としてインストールされているときに呼び出されます。 このメソッドは、次を含むLook & Feel用のコンポーネントを完全に構成するべきです。
        1. カラー、フォント、ボーダー、アイコン、不透明さなどのデフォルト・プロパティ値をコンポーネントにインストールする。 可能な場合は常に、クライアント・プログラムによって初期化されたプロパティの値をオーバーライドするべきではない
        2. 必要に応じて、コンポーネントにLayoutManagerをインストールする。
        3. 必要なサブコンポーネントを作成して、コンポーネントに追加する。
        4. イベント・リスナーを作成して、コンポーネントにインストールする。
        5. コンポーネントのプロパティの変更を適切に検出し、応答するために、PropertyChangeListenerを作成してコンポーネントにインストールする。
        6. キーボードUI (ニーモニック、トラバーサルなど)を、コンポーネントにインストールする。
        7. 適切なインスタンスのデータを初期化する。
        オーバーライド:
        installUI、クラス: ComponentUI
        パラメータ:
        c - UI委譲がインストールされるコンポーネント
        関連項目:
        ComponentUI.uninstallUI(javax.swing.JComponent), JComponent.setUI(javax.swing.plaf.ComponentUI), JComponent.updateUI()
      • uninstallUI

        public void uninstallUI​(JComponent c)
        クラスからコピーされた説明: ComponentUI
        installUI時に、指定されたコンポーネントに対して行われた構成を取り消します。 このメソッドは、このUIComponentインスタンスが、指定されたコンポーネントのUI委譲として削除されているときに呼び出されます。 このメソッドは、installUIによって実行された構成を元に戻すべきです。この場合、JComponentインスタンスをクリーンな状態(余分なリスナーや、Look & Feel固有のプロパティ・オブジェクトが残らないように)にするよう十分注意してください。 手順には次のものが含まれるべきです。
        1. UIとして設定されたすべてのボーダーを、コンポーネントから削除する。
        2. UIとして設定されたすべてのレイアウト・マネージャを、コンポーネントから削除する。
        3. UIとして追加されたすべてのサブコンポーネントを、コンポーネントから削除する。
        4. UIとして追加されたすべてのイベント/プロパティ・リスナーを、コンポーネントから削除する。
        5. UIとしてインストールされたすべてのキーボードUIを、コンポーネントから削除する。
        6. GCの対象になるように、割り当てられたすべてのインスタンス・データ・オブジェクトをnullに設定する。
        オーバーライド:
        uninstallUI、クラス: ComponentUI
        パラメータ:
        c - このUI委譲が削除されるコンポーネント。この引数は通常無視されるが、UIオブジェクトがステートレスで、複数のコンポーネントで共有されている場合は使用されることがある
        関連項目:
        ComponentUI.installUI(javax.swing.JComponent), JComponent.updateUI()
      • installDefaults

        protected void installDefaults​()
        JComboBoxに、デフォルトのカラー、フォント、レンダラ、およびエディタをインストールします。
      • installListeners

        protected void installListeners​()
        コンボボックスとそのモデルのためのリスナーを作成し、インストールします。 このメソッドは、UIインストール時に呼び出されます。
      • uninstallDefaults

        protected void uninstallDefaults​()
        コンボボックスからデフォルトのカラー、フォント、レンダラ、およびエディタをアンインストールします。
      • uninstallListeners

        protected void uninstallListeners​()
        インストールされたリスナーを、コンボボックスとそのモデルから削除します。 このメソッドで削除されるリスナーの数とタイプは、installListenersで追加されたものと同じであるべきです。
      • createPopup

        protected ComboPopup createPopup​()
        コンボボックスのポップアップ部分を作成します。
        戻り値:
        ComboPopupのインスタンス
        関連項目:
        ComboPopup
      • createKeyListener

        protected KeyListener createKeyListener​()
        コンボボックスに追加されるKeyListenerを作成します。 このメソッドがnullを返す場合、コンボボックスには追加されません。
        戻り値:
        KeyListenerのインスタンスまたはnull
      • createFocusListener

        protected FocusListener createFocusListener​()
        コンボボックスに追加されるFocusListenerを作成します。 このメソッドがnullを返す場合、コンボボックスには追加されません。
        戻り値:
        FocusListenerのインスタンス、またはnull
      • createListDataListener

        protected ListDataListener createListDataListener​()
        ComboBoxModelに追加されるリスト・データ・リスナーを作成します。 このメソッドがnullを返す場合、コンボ・ボックス・モデルには追加されません。
        戻り値:
        ListDataListenerのインスタンス、またはnull
      • createItemListener

        protected ItemListener createItemListener​()
        コンボボックスに追加されるItemListenerを作成します。 このメソッドがnullを返す場合、コンボボックスには追加されません。

        サブクラスは、このメソッドをオーバーライドして、独自のItemEventハンドラのインスタンスを返すことができます。

        戻り値:
        ItemListenerのインスタンス、またはnull
      • createPropertyChangeListener

        protected PropertyChangeListener createPropertyChangeListener​()
        コンボボックスに追加されるPropertyChangeListenerを作成します。 このメソッドがnullを返す場合、コンボボックスには追加されません。
        戻り値:
        PropertyChangeListenerのインスタンス、またはnull
      • createLayoutManager

        protected LayoutManager createLayoutManager​()
        コンボボックスを構成するコンポーネントを管理するためのレイアウト・マネージャを作成します。
        戻り値:
        レイアウト・マネージャのインスタンス
      • createRenderer

        protected ListCellRenderer<Object> createRenderer​()
        編集不可能なコンボボックスで使用されるデフォルト・レンダラを作成します。 レンダラがsetRendererで明示的に設定されていない場合だけ、デフォルト・レンダラが使用されます。
        戻り値:
        コンボボックスに使用されるListCellRender
        関連項目:
        JComboBox.setRenderer(javax.swing.ListCellRenderer<? super E>)
      • createEditor

        protected ComboBoxEditor createEditor​()
        編集可能なコンボボックスで使用されるデフォルト・エディタを作成します。 エディタがsetEditorで明示的に設定されていない場合だけ、デフォルト・エディタが使用されます。
        戻り値:
        コンボボックスに使用されるComboBoxEditor
        関連項目:
        JComboBox.setEditor(javax.swing.ComboBoxEditor)
      • installComponents

        protected void installComponents​()
        集合コンボボックスを構成するコンポーネントを作成し、初期化します。 このメソッドは、UIインストール・プロセスの一部として呼び出されます。
      • uninstallComponents

        protected void uninstallComponents​()
        コンボ・ボックスを構成する集合コンポーネントは登録解除され、初期化解除されます。 このメソッドは、UIアンインストール・プロセスの一部として呼び出されます。
      • addEditor

        public void addEditor​()
        このpublicメソッドは実装固有のもので、privateであるべきです。呼び出しまたはオーバーライドしないでください。 特定のエディタを実装するには、カスタムのComboBoxEditorを作成してください。
        関連項目:
        createEditor(), JComboBox.setEditor(javax.swing.ComboBoxEditor), ComboBoxEditor
      • removeEditor

        public void removeEditor​()
        このpublicメソッドは実装固有のもので、privateであるべきです。呼び出しまたはオーバーライドしないでください。
        関連項目:
        addEditor()
      • configureEditor

        protected void configureEditor​()
        protectedメソッドは実装固有のもので、privateであるべきです。呼び出しまたはオーバーライドしないでください。
        関連項目:
        addEditor()
      • unconfigureEditor

        protected void unconfigureEditor​()
        このprotectedメソッドは実装固有のもので、privateであるべきです。 呼び出しまたはオーバーライドしないでください。
        関連項目:
        addEditor()
      • configureArrowButton

        public void configureArrowButton​()
        このpublicメソッドは実装固有のもので、privateであるべきです。 呼び出しまたはオーバーライドしないでください。
        関連項目:
        createArrowButton()
      • unconfigureArrowButton

        public void unconfigureArrowButton​()
        このpublicメソッドは実装固有のもので、privateであるべきです。 呼び出しまたはオーバーライドしないでください。
        関連項目:
        createArrowButton()
      • createArrowButton

        protected JButton createArrowButton​()
        コンボボックスのポップアップ部分の表示または非表示の制御に使用されるボタンを作成します。
        戻り値:
        ポップアップ制御を表すボタン
      • isPopupVisible

        public boolean isPopupVisible​(JComboBox<?> c)
        ポップアップが可視かどうかを判定します。
        定義:
        isPopupVisible、クラス: ComboBoxUI
        パラメータ:
        c - JComboBox
        戻り値:
        JComboBoxのポップアップが表示されている場合はtrue
      • setPopupVisible

        public void setPopupVisible​(JComboBox<?> c,
                                    boolean v)
        ポップアップを非表示にします。
        定義:
        setPopupVisible、クラス: ComboBoxUI
        パラメータ:
        c - JComboBox
        v - ポップアップの可視性を決定するboolean
      • isFocusTraversable

        public boolean isFocusTraversable​(JComboBox<?> c)
        JComboBoxが、フォーカスのトラバースが可能であるかどうかを判定します。 JComboBoxが編集可能な場合は、falseを返します。そうでない場合はtrueを返します。
        定義:
        isFocusTraversable、クラス: ComboBoxUI
        パラメータ:
        c - JComboBox
        戻り値:
        指定されたJComboBoxがトラバーサブルな場合はtrue
      • paint

        public void paint​(Graphics g,
                          JComponent c)
        クラスからコピーされた説明: ComponentUI
        指定されたコンポーネントをLook & Feelに合わせてペイントします。 このメソッドは、指定されたコンポーネントがペイントされるときにComponentUI.updateメソッドから呼び出されます。 サブクラスは、このメソッドをオーバーライドして、指定されたGraphicsオブジェクトを使ってコンポーネントの内容を描画するべきです。
        オーバーライド:
        paint、クラス: ComponentUI
        パラメータ:
        g - ペイント対象のGraphicsコンテキスト
        c - ペイントされるコンポーネント。この引数は通常無視されるが、UIオブジェクトがステートレスで、複数のコンポーネントで共有されている場合は使用されることがある
        関連項目:
        ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
      • getPreferredSize

        public Dimension getPreferredSize​(JComponent c)
        クラスからコピーされた説明: ComponentUI
        指定されたコンポーネントの、Look & Feelに適した推奨サイズを返します。 nullが返された場合、適切なサイズは代わりにコンポーネントのレイアウト・マネージャによって計算されます(これは、特定のレイアウト・マネージャをインストールしてあるコンポーネントの場合に推奨する方法です)。 このメソッドのデフォルト実装はnullを返します。
        オーバーライド:
        getPreferredSize、クラス: ComponentUI
        パラメータ:
        c - 推奨サイズが照会されるコンポーネント。この引数は通常無視されるが、UIオブジェクトがステートレスで、複数のコンポーネントで共有されている場合は使用されることがある
        戻り値:
        Look&Feelに適した指定されたコンポーネントの優先サイズを含むDimensionオブジェクト
        関連項目:
        JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)
      • getMaximumSize

        public Dimension getMaximumSize​(JComponent c)
        クラスからコピーされた説明: ComponentUI
        指定されたコンポーネントの、Look & Feelに適した最大サイズを返します。 nullが返された場合、最大サイズは代わりにコンポーネントのレイアウト・マネージャによって計算されます(これは、特定のレイアウト・マネージャをインストールしてあるコンポーネントの場合に推奨する方法です)。 このメソッドのデフォルト実装はgetPreferredSizeを呼び出して、その値を返します。
        オーバーライド:
        getMaximumSize、クラス: ComponentUI
        パラメータ:
        c - 最大サイズが照会されるコンポーネント。この引数は通常無視されるが、UIオブジェクトがステートレスで、複数のコンポーネントで共有されている場合は使用されることがある
        戻り値:
        Dimensionオブジェクトまたはnull
        関連項目:
        JComponent.getMaximumSize(), LayoutManager2.maximumLayoutSize(java.awt.Container)
      • getBaseline

        public int getBaseline​(JComponent c,
                               int width,
                               int height)
        ベースラインを返します。
        オーバーライド:
        getBaseline、クラス: ComponentUI
        パラメータ:
        c - ベースラインが要求されるJComponent
        width - ベースラインを取得する幅
        height - ベースラインを取得する高さ
        戻り値:
        ベースラインまたは0より小さい値(適切なベースラインがないことを示す)
        例外:
        NullPointerException - cnullである場合
        IllegalArgumentException - 幅または高さが0より小さい場合
        導入されたバージョン:
        1.6
        関連項目:
        JComponent.getBaseline(int, int)
      • getBaselineResizeBehavior

        public Component.BaselineResizeBehavior getBaselineResizeBehavior​(JComponent c)
        サイズの変化に合わせてコンポーネントのベースラインがどのように変化するかを示す列挙を返します。
        オーバーライド:
        getBaselineResizeBehavior、クラス: ComponentUI
        パラメータ:
        c - ベースラインのサイズ変更の動作を返すJComponent
        戻り値:
        コンポーネント・サイズの変化に合わせてベースラインがどのように変化するかを示す列挙
        例外:
        NullPointerException - cnullである場合
        導入されたバージョン:
        1.6
        関連項目:
        JComponent.getBaseline(int, int)
      • getAccessibleChildrenCount

        public int getAccessibleChildrenCount​(JComponent c)
        クラスからコピーされた説明: ComponentUI
        オブジェクト内のアクセシビリティ対応の子の数を返します。 このオブジェクトのすべての子がAccessibleインタフェースを実装している場合、このメソッドはこのオブジェクトの子の数を返すべきです。 UIが、画面上にコンポーネントとして表示される領域は提供するが、実際のコンポーネントがこの領域を提供するために使用されない場合、UIにおいて必要に応じてこのメソッドをオーバーライドできます。 注: バージョン1.3以降は、このメソッドの代わりにComponent.AccessibleAWTComponent.getAccessibleChildrenCount()を呼び出すことをお勧めします。
        オーバーライド:
        getAccessibleChildrenCount、クラス: ComponentUI
        パラメータ:
        c - アクセス可能な子の数を取得するJComponent
        戻り値:
        オブジェクト内のアクセシビリティ対応の子の数
        関連項目:
        ComponentUI.getAccessibleChild(javax.swing.JComponent, int)
      • getAccessibleChild

        public Accessible getAccessibleChild​(JComponent c,
                                             int i)
        クラスからコピーされた説明: ComponentUI
        オブジェクトのi番目のAccessibleの子を返します。 UIが、画面上にコンポーネントとして表示される領域は提供するが、この領域を提供するのに実際のコンポーネントを使用しない場合、UIは必要に応じてこのメソッドをオーバーライドします。

        注: バージョン1.3以降は、このメソッドの代わりにComponent.AccessibleAWTComponent.getAccessibleChild()を呼び出すことをお勧めします。

        オーバーライド:
        getAccessibleChild、クラス: ComponentUI
        パラメータ:
        c - 子オブジェクトを取得するためのJComponent
        i - 子のゼロから始まるインデックス
        戻り値:
        オブジェクトのi番目のAccessibleの子
        関連項目:
        ComponentUI.getAccessibleChildrenCount(javax.swing.JComponent)
      • isNavigationKey

        protected boolean isNavigationKey​(int keyCode)
        指定されたkeyCodeが、ナビゲーション用のキーにマップされるかどうかを返します。 これは、ナビゲーション・キー以外のキーのみを先打ちメカニズムに渡すことによって、キー入力を最適化するために使用されます。 サブクラスがナビゲーション・キーを変更する場合は、これをオーバーライドするべきです。
        パラメータ:
        keyCode - キー・コード
        戻り値:
        提供されたkeyCodeがナビゲーション・キーにマップされている場合はtrue
      • selectNextPossibleValue

        protected void selectNextPossibleValue​()
        リストの次の項目を選択します。 現在選択されている項目が最後の項目である場合は、選択はそのままです。
      • selectPreviousPossibleValue

        protected void selectPreviousPossibleValue​()
        リストから1つ前の項目を選択します。 現在選択されている項目が最初の項目である場合は、選択はそのままです。
      • toggleOpenClose

        protected void toggleOpenClose​()
        ポップアップが表示されている場合は非表示にし、非表示になっている場合は表示します。
      • rectangleForCurrentValue

        protected Rectangle rectangleForCurrentValue​()
        現在選択されている項目を描画するために予約されている領域を返します。
        戻り値:
        現在選択されているアイテムを描画するために予約されている領域
      • getInsets

        protected Insets getInsets​()
        JComboBoxからイン・セットを取得します。
        戻り値:
        インセット
      • paintCurrentValue

        public void paintCurrentValue​(Graphics g,
                                      Rectangle bounds,
                                      boolean hasFocus)
        現在選択されている項目をペイントします。
        パラメータ:
        g - Graphicsのインスタンス
        bounds - レンダリングする境界矩形
        hasFocus - 焦点が合っている
      • paintCurrentValueBackground

        public void paintCurrentValueBackground​(Graphics g,
                                                Rectangle bounds,
                                                boolean hasFocus)
        現在選択されている項目のバックグラウンドをペイントします。
        パラメータ:
        g - Graphicsのインスタンス
        bounds - レンダリングする境界矩形
        hasFocus - 焦点が合っている
      • getDefaultSize

        protected Dimension getDefaultSize​()
        現在のレンダラとフォントを使用するコンボボックスの、空のディスプレイ領域のデフォルト・サイズを返します。
        戻り値:
        空のディスプレイ領域のサイズ
        関連項目:
        getDisplaySize()
      • getDisplaySize

        protected Dimension getDisplaySize​()
        ディスプレイ領域の、計算されたサイズを返します。 ディスプレイ領域は、選択した項目が表示されるコンボボックスの一部です。 プロトタイプ・ディスプレイ値が設定されている場合、このメソッドはこれを使用します。

        項目数の多いコンボボックスについては、プロトタイプ・ディスプレイ値を使用して、ディスプレイ・サイズの計算を大幅に速めることをお勧めします。

        戻り値:
        コンボボックスの項目から計算される、ディスプレイ領域のサイズ
        関連項目:
        JComboBox.setPrototypeDisplayValue(E)
      • getSizeForComponent

        protected Dimension getSizeForComponent​(Component comp)
        セル・レンダラとして使用された場合のコンポーネントのサイズを返します。
        パラメータ:
        comp - チェックするComponent
        戻り値:
        コンポーネントのサイズ
        導入されたバージョン:
        1.7
      • installKeyboardActions

        protected void installKeyboardActions​()
        JComboBoxにキーボード・アクションを追加します。 EnterキーおよびEscキーについてのアクションは、すでに提供されています。 必要に応じてアクションを追加してください。
      • uninstallKeyboardActions

        protected void uninstallKeyboardActions​()
        フォーカスInputMapおよびActionMapを削除します。