[英]How to create a drop-down list in java swing with multiple item selection?
我知道JList
和JComboBox
。 我需要具有JList
提供的多個選擇功能的組合框下拉功能。
這是因為列表的內容太大而無法使用簡單列表顯示。 我還需要選擇多個項目,否則我會滿足於JComboBox
。
有什么建議么?
使用多選時,最好使用列表而不是組合框。 隨着GUI隱喻的出現,人們希望組合框可以單選,而列表也可以。
列表的內容太大,無法使用簡單列表顯示
將JList
放在JScrollPane
。 您可以在JList
上調用setVisibleRowCount(int)來指定一次應顯示多少行。
您可以為組合框創建自定義單元格渲染器,並為該組件添加復選框,以便您可以選中和取消選中它們。 你必須做這樣的事情:
public class MyComboBoxRenderer implements ListCellRenderer {
private String[] items;
private boolean[] selected;
public MyComboBoxRenderer(String[] items){
this.items = items;
this.selected = new boolean[items.lenght];
}
public Component getListCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int index) {
// Create here a JLabel with the text
// Create here a JCheckBox
// Add them to a layoutmanager
return this;
}
public void setSelected(int i, boolean flag)
{
this.selected[i] = flag;
}
}
如果您的數據具有分層字符,請考慮NetBeans的Outline
組件,在“ 公布新的Swing樹表”和本答案中進行了討論 。 這是API的當前開發版本 。
為了實現所描述的功能,我最終決定“濫用” JMenuBar
並添加幾個JCheckBoxMenuItems
。 GUI然后完全符合目的(至少對我來說),只是處理ItemEvent有可能變得有點煩人。
(最后在那里,我在項目上定義了一些邏輯,然后可能限制自己只處理一種類型的事件)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.