7

我知道JListJComboBox。我需要具有多重选择功能的组合框下拉功能JList

这是因为列表的内容太大而无法使用简单的列表来显示。我还需要选择多个项目,否则我会满足于JComboBox.

有什么建议么?

4

4 回答 4

9

使用多选时,最好使用列表而不是组合框。正如 GUI 隐喻一样,人们期望组合框是单​​选的,而列表可以是单选的。

列表内容太大,无法使用简单列表显示

将. JList_ JScrollPane您可以调用setVisibleRowCount(int)JList指定一次应该显示多少行。

于 2010-05-18T19:17:28.263 回答
6

您可以为组合框制作自定义单元格渲染器并向该组件添加复选框,以便您可以选中和取消选中它们。你必须做这样的事情:

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;
    }

}
于 2010-05-18T19:24:20.333 回答
2

如果您的数据具有分层特征,请考虑 NetBeans 的Outline组件,在宣布新的 Swing 树表和此答案中进行了讨论。这是 API 的当前开发版本

于 2010-05-18T20:30:26.907 回答
1

为了实现所描述的功能,我最终决定“滥用”JMenuBar并添加几个JCheckBoxMenuItems. 然后 GUI 完全符合目的(至少对我而言),只是 ItemEvent 的处理有可能变得有点烦人。

(最后,我在项目上定义了一些位逻辑,然后可能会限制自己只处理一种类型的事件)

于 2016-07-28T22:04:19.093 回答