2012-10-12 93 views
2

我正在使用Swing,並將JComboBox添加到JPanel。通常,當您單擊JComboBox時,它會垂直枚舉可能的選項(類似於任何網站上的組合框)。如何讓我的Swing JComboBox水平擴展而不是垂直擴展?

但是,我想ComboBox水平擴展 - 有沒有辦法做到這一點,而無需編寫自定義渲染器?

垂直擴展

[ ComboBox ] 

- Option 
- Option 
- Option 

水平擴展

[ ComboBox ] -- [ Option | Option | Option | Option ] 
+1

+1有趣的問題!我正在尋找一個工作解決方案:) –

+0

謝謝!看起來像是一場比賽。 :D – sdasdadas

+2

*「我想讓ComboBox水平擴展」*聽起來很可怕。 1)它會橫向擁擠。 2)我可以通過一個垂直排列的組合框將頁面向下翻頁或向上翻頁,其中有很多條目,但分頁「右」或「左」的按鈕是什麼? –

回答

1

我敢肯定的回答你的問題是 「不」。您將不得不至少構建渲染器的一部分才能爲您做到這一點。但這裏有一個開始:

//Override the createPopup method - everything else can stay the same 
public static CustomRenderer extends MetalComboBoxUI{ 
    @Override 
    protected ComboPopup createPopup() { 
     // Do something different here 
     ComboPopup result = super.createPopup(); 
     return result; 
    } 
} 

你會想安裝你想要的組合框這個UI也適用於使用box.setUI(new CustomRenderer());

+2

請閱讀我的最後一條評論,並使用BasicComboBoxUI, – mKorbel

+0

@mKorbel - 我不確定Metal是否有什麼特別的東西是基本沒有的(並且懷疑那裏有像Nimbus這樣的更高級用戶界面),所以我選擇了Metal。這是一個有效的關注點,還是僅僅使用Basic的共識? –

+1

啓用水平JScrollBar,禁用垂直(xxx_NEVER)爲JList設置方向,pack() – mKorbel