我正在制作一个剧场座位预订系统用于某些课程作业,但是我在制作JComboBox时遇到了麻烦,以帮助用户从197年的一套座位中选择一个座位。
席位由“席位”对象表示,这些对象只是一些变量的集合,例如“isBooked”(布尔)。座椅布置成多个座椅阵列,每个阵列代表一排座椅,例如A [],B [] ......
我可以轻松地将单个数组添加到JComboBox并使其正常工作但尝试将更多数组添加到JComboBox中的列表失败。我可以一次添加一个座位,但这显然效率低下。
如何将多个数组添加到JComboBox?即A [1],A [2],A [3] ...... A [14],B [1],B [2] ......
这是我目前的JComboBox的代码,据我所知,这应该有效 - 我无法弄清楚它为什么不是。我在Seat类中有一个名为toString()的方法,它返回表示座位的String。
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存储在Seat at的数组中 org.apache.commons.lang3.ArrayUtils.addAll(ArrayUtils.java:3469)at at BookingsSystem.main(BookingsSystem.java:267)引起: java.lang.System.arraycopy的java.lang.ArrayStoreException(Native 方法)at org.apache.commons.lang3.ArrayUtils.addAll(ArrayUtils.java:3459)... 另外1个Java结果:1
第267行是上面的一行
答案 0 :(得分:2)
您可以使用ArraysUtil.addAll()将所有数组合并为一个,然后将单个数组添加到JComboBox
答案 1 :(得分:2)
使用@Apurv建议的方法组合数组。
Seat[] seats = ArrayUtils.addAll(A, B, C);
像这样创建你的JComboBox:
JComboBox seatCombobox = new JComboBox(seats);
这将使用默认模型创建一个新的JComboBox,并选择第一个项目