2016-07-04 23 views
1

JComboBoxがあり、レイアウトに関するほとんどすべてが変更されています。私はポップアップ、矢印ボタン、背景色などの選択色を変更しました。最後の残りの部分は、私が望む方法を見ていない、ポップアップの境界線の色(内側のJList)です。JComboBoxのインナーポップアップ(JList)の境界線の色を変更します。

私のコンボボックスは、以下のようになります。

enter image description here

あなたが見ることができるように、それは全体のレイアウトに一致していない、黒の境界線を持っています。私はそれを上の国境で見える青色に変えたいと思います。

私はいくつかの調査をしましたが、解決策はありませんでした。最も近い解決策はpostでした。しかし、それは動作しませんでした。 、私はその境界線を変更するには、別の方法を作成し、

public static void setSelectionColorOfComboBox(JComboBox<String> comboBox) 
{ 
    Object child = comboBox.getAccessibleContext().getAccessibleChild(0); 
    BasicComboPopup popup = (BasicComboPopup) child; 
    JList list = popup.getList(); 
    list.setBorder(new LineBorder(ColorPalette.LIGHT_BLUE, 1)); 
    list.setSelectionBackground(ColorPalette.LIGHT_BLUE); 
    list.setSelectionForeground(Color.WHITE); 
    list.setFocusable(false); 
} 

が何かを欠場していないことを確認する:

はseleciton色の変化とともに、私はすでに国境は次のように色を変更しようとしました上記からリンクされている記事によると:

public static void setBorderColorOfComboBoxPopup(JComboBox<String> comboBox) 
{ 
    Object child = comboBox.getAccessibleContext().getAccessibleChild(0); 
    BasicComboPopup popup = (BasicComboPopup) child; 
    JList list = popup.getList(); 
    list.setBorder(new LineBorder(ColorPalette.LIGHT_BLUE)); 
} 

しかし、これはどちらか動作しませんでした。誰かが私のためにそれらの一般的な方法がうまくいかない理由を知っていますか、誰かが境界色を変える別のアプローチを少なくとも知っていますか?

現在、私は、JListの周りにスクロールペインのようなものがあると考えています。可能であれば、私がそれにアクセスして境界線を設定できるかどうかについていくつかの調査を行います。

答えて

1

あなたがポップアップの境界線を変更するにはBasicComboBoxUIクラスのcreatePopup()メソッドをオーバーライドすることができますしようと研究の時間後

jComboBox.setUI(new BasicComboBoxUI() { 
    @Override 
    protected ComboPopup createPopup() { 
     BasicComboPopup basicComboPopup = new BasicComboPopup(comboBox); 
     basicComboPopup.setBorder(new LineBorder(Color.RED)); 
     return basicComboPopup; 
    } 
}); 
+0

はい、ありがとうございます。数分前、私はその解決策にも来ました。 :)私はそれを最良の答えとしてマークします。 – KJaeg

0

は、スクロールペインの私の最後のアイデアはちょうど溶液に私を導い2〜3分。リストを含んでいるコンポーネントについて考えると、私はポップアップについて考えました。ポップアップには2つのレベルがあり、境界線を持つことができます。 最初のものはポップアップからのJListで、もう1つはポップアップ自体です。どういうわけか、黒いボーダーが私の内側のJListの青い枠を覆っていました。 短いストーリー、コードの次の部分が作業をしました:

関連する問題