【问题标题】:How can I add multiple arrays to a JComboBox?如何将多个数组添加到 JComboBox?
【发布时间】:2013-03-16 15:52:09
【问题描述】:

我正在为一些课程制作一个剧院座位预订系统,但在创建一个 JComboBox 来帮助用户从总共 197 个座位中选择一个座位时遇到了麻烦。

座位由“Seat”对象表示,这些对象只是一些变量的集合,例如“isBooked”(布尔值)。座位排列成多个座位阵列,每个阵列代表一排座位,例如A[], B[]...

在预订座位时,需要按行分隔座位,因为它们的价格不同,但是 JComboBox 将用作选择要取消预订的座位的一种方式,因此只需要完整的座位列表。

我可以轻松地将单个数组添加到 JComboBox 并使其正常工作,但是尝试将更多数组添加到 JComboBox 中的列表失败。

如何向 JComboBox 添加多个数组? 即 A[1]、A[2]、A[3]...A[14]、B[1]、B[2]...

我在 Java 方面不是很有经验,如果这是一个愚蠢的问题,我很抱歉。 经过过去几天的大量研究,我尝试使用 DefaultComboBoxModel 类进行试验,但显然没有正确使用它。这是我最近尝试解决我的问题:

DefaultComboBoxModel model = new DefaultComboBoxModel();
            model.addElement(A);
            model.addElement(B);
            model.addElement(C);
            model.addElement(D);
            model.addElement(E);
            model.addElement(F);
            model.addElement(G);
            model.addElement(H);
            model.addElement(J);
            model.addElement(K);
            model.addElement(L);
            JComboBox seatCombobox = new JComboBox();
            seatCombobox.setModel(model);
            unbookSeatWindow.buttonsPanel.add(seatCombobox);

我们将不胜感激。

【问题讨论】:

    标签: java arrays swing jcombobox


    【解决方案1】:

    您可以使用ArrayList通过以下方式填充模型:

        DefaultComboBoxModel model ;
        JComboBox seatCombobox = new JComboBox();
        public void fillModel()
        {
          ArrayList<String> elements = new ArrayList<String>();
          elements.addAll(java.util.Arrays.asList(A));
          elements.addAll(java.util.Arrays.asList(B));
          elements.addAll(java.util.Arrays.asList(C));
          elements.addAll(java.util.Arrays.asList(D));
          elements.addAll(java.util.Arrays.asList(E));
          elements.addAll(java.util.Arrays.asList(F));
          elements.addAll(java.util.Arrays.asList(G));
          elements.addAll(java.util.Arrays.asList(H));
          elements.addAll(java.util.Arrays.asList(I));
          elements.addAll(java.util.Arrays.asList(J));
          elements.addAll(java.util.Arrays.asList(K));
          elements.addAll(java.util.Arrays.asList(L));
          model = new DefaultComboBoxModel(elements.toArray()) ;
          seatCombobox.setModel(model);
        }
    

    【讨论】:

    • 我认为 Vectors 已经过时了,不能再使用了。
    【解决方案2】:

    您的 DefaultComboBoxModel 代码是正确答案。您只需从尽可能多的数组中添加元素。

    我建议您使用两个 JComboBox 组件。一个用于分区,另一个用于座位号。否则,您的用户会在阅读数百个席位的列表时感到沮丧。

    【讨论】:

    • 如果有人“取消预订”一个座位,我会尝试只为他们提供他们预订的那些座位,而不是该地点的每个座位的列表,其中大部分是不相关的。
    • @rcook:我错过了问题中的那一行。是的,取消预订时,只显示预订人的座位。
    • 所以我输入的代码是正确的?那为什么不行呢?当我使用这段代码时,所有显示的是一个随机的数字序列来代替 JComboBox 中的每个数组。我也喜欢这两个组合框的想法,我会先熟悉我的旧设置,然后再研究这样做,谢谢。
    • @Mike:假设 A、B、C 等是元素,是的。您可能希望将 addElement 方法调用放在一个 for 循环中,每个数组都有一个 for 循环。
    • @Mike: Seat[] 是一个 Seat 实例数组。确保 Seat 有一个 toString 方法。 toString 方法的输出是组合框中显示的内容。每个 Seat 实例都是一个元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2019-05-30
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多