質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

3回答

3487閲覧

[java][Swing]for文を使ってコンポーネント生成を簡潔にまとめたい

sirokuman

総合スコア45

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2016/01/16 07:03

編集2016/01/16 07:22

java

1JComboBox Combo1 = new JComboBox(color1); 2JComboBox Combo2 = new JComboBox(color2); 3JComboBox Combo3 = new JComboBox(color3); 4JComboBox Combo4 = new JComboBox(color4); 5 6p.add(Combo1); 7p.add(Combo2); 8p.add(Combo3); 9p.add(Combo4);

の処理をfor文を使って完結にまとめたいのですが、どのようにすればよいのでしょう...?
教えていただければ幸いです。
自分では

java

1for(int i=0;i<=4;i++){ 2JComboBox Combo + i = new JComboBox(color + i); 3p.add(Combo + i); 4}

のように出来ないかなぁ...と試行錯誤していたのですが、うまくいかないので、質問させていただきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JMA

2016/01/16 19:50

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
guest

回答3

0

自己解決

JComboBoxの内容の配列を多次元配列化し、for文のループに対応できるように変更しましたところ、うまくいきました。

回答していただいた方、どうもありがとうございました。

投稿2016/01/22 03:13

sirokuman

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Java5以降なら、こんな感じでしょうか

Java

1import javax.swing.ComboBoxModel; 2import javax.swing.DefaultComboBoxModel; 3import javax.swing.JComboBox; 4import javax.swing.JPanel; 5 6public class Sample { 7 8 public static void main(String[] args) { 9 JPanel p = new JPanel(); 10 11 // 実際には new DefaultComboBoxModel() 部分は個々の JComboBox固有の設定を記述する 12 ComboBoxModel[] colors = { 13 new DefaultComboBoxModel(), 14 new DefaultComboBoxModel(), 15 new DefaultComboBoxModel(), 16 new DefaultComboBoxModel() 17 }; 18 19 20 for (ComboBoxModel color : colors) { 21 p.add(new JComboBox(color)); 22 } 23 } 24} 25

JComboBox の取るスカラの引数は ComboBoxModelだけなので、
color という名前の意味がよくわからないことになっていますが、
止むを得ずこのような形にしています。
また、このままではワーニングがたくさんでると思いますが、
本質問の趣旨とは関係なく、とりあえずこのままでもコンパイル実行はできるので、
無視しています。

ポイントとしては、

  • Collection や配列を使う
  • ジェネリクスを使う

の二点になると思います。

ただ、上記リストでは for ループを使うために無理に配列にしていますが、
color1~color4 の内容が全くばらばらで、前もって保持して使いまわすといった必要のない、
一回限りのものであるならば、

for ループを使わず、

Java

1import javax.swing.DefaultComboBoxModel; 2import javax.swing.JComboBox; 3import javax.swing.JPanel; 4 5public class Sample2 { 6 7 public static void main(String[] args) { 8 JPanel p = new JPanel(); 9 10 // 実際には new DefaultComboBoxModel() 部分は個々の JComboBox固有の設定を記述する 11 p.add(new JComboBox(new DefaultComboBoxModel())); 12 p.add(new JComboBox(new DefaultComboBoxModel())); 13 p.add(new JComboBox(new DefaultComboBoxModel())); 14 p.add(new JComboBox(new DefaultComboBoxModel())); 15 } 16}

と書いてしまったほうがより簡潔だと思います。

投稿2016/01/16 07:40

kozuchi

総合スコア1193

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

+ iなどを付けて変数名を変えることは、Javaではできません。
+ iを付けなければ良いだけです。
colorは配列に入れましょう。

lang

1for(int i=0;i<=4;i++){ 2 JComboBox combo = new JComboBox(colors[i]); 3 p.add(combo); 4}

投稿2016/01/16 07:28

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問