Swingコンポーネントの配列化
たくさんのSwingコンポーネント(jLabel,jRadioButton,jButtonなど)を使う場合には、番号で管理したほうが効率的なことがよくあります。
番号で管理とくれば配列の出番ですが、Swingコンポーネントを配列として扱うサンプルを紹介します。
このサンプルでは、画像表示のためのjLabelを8個、jRadioButtonを8個扱い、それぞれを配列にセットしてプログラム内で管理します。
起動時にまず0行0列と1行3列に画像を表示し、jButton1をクリックすると0行3列(1行4列)のjLabelにファイルから読み込んだ画像を表示します。
動作画面例

Calendar Input Dialog
K., 2016
プログラムはいつものようにNetBeansのGUIデザイナを使用していますので、ソースコードは手動入力する部分のみ示します。
import javax.swing.ImageIcon;
/**
*
* @author K
*/
public class ArraySample extends javax.swing.JFrame {
//最初の行のimport文を忘れないように。
ImageIcon[] IconArray= new ImageIcon[5]; //使用する画像ファイルの個数を指定
javax.swing.JLabel[][] LabelArray= new javax.swing.JLabel[2][4]; //JLabelの行数,列数を指定。
javax.swing.JRadioButton[][] RadioArray= new javax.swing.JRadioButton[3][2]; //JRadioButtonの行数,列数を指定。
/**
* Creates new form HairetuSample
*/
public ArraySample() {
initComponents();
//使用する画像ファイルはこのプロジェクトのclassesフォルダに入れておく。
IconArray[0]=new ImageIcon(getClass().getResource("file1.jpg"));
IconArray[1]=new ImageIcon(getClass().getResource("file2.jpg"));
IconArray[2]=new ImageIcon(getClass().getResource("file3.jpg"));
LabelArray[0][0]=jLabel1;
LabelArray[0][1]=jLabel2;
LabelArray[0][2]=jLabel3;
LabelArray[0][3]=jLabel4;
LabelArray[1][0]=jLabel5;
LabelArray[1][1]=jLabel6;
LabelArray[1][2]=jLabel7;
LabelArray[1][3]=jLabel8;
LabelArray[0][0].setIcon(IconArray[0]); //1行1列のLabelに1番目の画像を表示
LabelArray[1][3].setIcon(IconArray[1]); //2行4列のLabelに2番目の画像を表示
RadioArray[0][0] = jRadioButton1;
RadioArray[1][0] = jRadioButton2;
RadioArray[2][0] = jRadioButton3;
RadioArray[0][1] = jRadioButton4;
RadioArray[1][1] = jRadioButton5;
RadioArray[2][1] = jRadioButton6;
RadioArray[0][0].setSelected(true); //ラジオボタンをセレクトにする
RadioArray[1][1].setSelected(true); //ラジオボタンをセレクトにする
}
//
private void initComponents() {
//NetBeansにより自動生成されるコード。内容省略
}//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//ボタンをクリックすると、ランダムに図の0番から2番の中から一つを1行3列(LabelArray[0][2])に表示
int n= (int)(Math.random()*3.0);
LabelArray[0][2].setIcon(IconArray[n]); //IconArrayの中に画像が入っているのでその中の一つを選ぶ
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
//内容省略
}
}
