1

私はいくつかのコースワークのために劇場の座席予約システムを作成していますが、JComboBox を作成してユーザーが 197 のセットから座席を選択できるようにするのに問題があります。

座席は、「isBooked」(ブール値) などのいくつかの変数の単なるコレクションである「Seat」オブジェクトによって表されます。座席は複数の座席配列に配置され、各配列は座席の行を表します (例: A[]、B[]...

JComboBox に 1 つの配列を簡単に追加して正常に動作させることはできますが、JComboBox のリストにさらに配列を追加しようとすると失敗します。一度に 1 つずつ座席を追加できますが、これは明らかに非効率的です。

複数の配列を JComboBox に追加するにはどうすればよいですか? つまり、A[1]、A[2]、A[3]... A[14]、B[1]、B[2]...

これは現時点で私の JComboBox のコードです。私が見る限り、これは機能するはずです。なぜ機能しないのかわかりません。座席を表す文字列を返す toString() というメソッドが Seat クラスにあります。

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 はすべて問題ないと言いましたが、プログラムを実行しようとするとすぐに、次の例外が発生しました。

スレッド「メイン」の BlException java.lang.IllegalArgumentException: 予約システム.メイン (BookingsSystem. java:267) 原因: java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at org.apache.commons.lang3.ArrayUtils.addAll(ArrayUtils.java:3459) ... 1 more Java Result : 1

267行目は上の行です

4

2 に答える 2

2

@Apurv によって提案された方法を使用して配列を結合します。

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

次のように JComboBox を作成します。

JComboBox seatCombobox = new JComboBox(seats);

これにより、デフォルトのモデルと選択された最初のアイテムを使用して新しい JComboBox が作成されます

于 2013-03-29T12:07:24.817 に答える
2

ArraysUtil.addAll()を使用して、すべての配列を 1 つに結合し、単一の配列を追加することができます。JComboBox

于 2013-03-29T12:02:41.783 に答える