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