1

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

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

我可以轻松地将单个数组添加到 JComboBox 并使其正常工作,但是尝试将更多数组添加到 JComboBox 中的列表失败。我可以一次添加一个座位,但这显然效率低下。

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

这是目前我的 JComboBox 的代码,据我所知,这应该可以工作 - 我无法弄清楚为什么它不是。我在 Seat 类中有一个名为 toString() 的方法,它返回代表座位的字符串。

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

这段代码的结果是这样的:http://pasteboard.co/1eej5Be1.png 在 JComboBox 中是代表每个数组的随机代码(我忘记了这个名称),但没有代表数组中的每个单独座位。JComboBox 总共应该有 197 个条目

所有帮助将不胜感激。

正如建议的那样,我尝试使用

`allSeats = ArrayUtils.addAll(A, B, C, D, E, F, G, H, J, K, L);`

但 NetBeans 告诉我将其更改为

`allSeats = (Seat[]) ArrayUtils.addAll(A, B, C, D, E, F, G, H, J, K, L);`

NetBeans 然后说一切都很好,但是当我尝试运行程序时,我得到了这个异常:

线程“main”中的 BlException java.lang.IllegalArgumentException:无法将 java.lang.Object 存储在 BookingsSystem.main(BookingsSystem. java:267) 由: java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at org.apache.commons.lang3.ArrayUtils.addAll(ArrayUtils.java:3459) ... 1 个 Java 结果: 1

第 267 行是上面的行

4

2 回答 2

2

您可以使用ArraysUtil.addAll()将所有数组合并为一个,然后将单个数组添加到JComboBox

于 2013-03-29T12:02:41.783 回答
2

使用@Apurv 建议的方法组合数组。

Seat[] seats = ArrayUtils.addAll(A, B, C);

像这样创建您的 JComboBox:

JComboBox seatCombobox = new JComboBox(seats);

这将使用默认模型和选择的第一个项目创建一个新的 JComboBox

于 2013-03-29T12:07:24.817 回答