JComboBoxで選択した項目で、内部クラスのリストに、このマシンで扱える画像拡張子をリストアップしています。
package paint; import java.awt.*;//Point、Color Graphicsなどのパッケージ import javax.swing.*;//JPanelのパッケージ import java.awt.event.*;//ItemListenerなどのリスナーや、イベント用 class ImageFormatPanel extends JPanel{ JComboBox comboBox = new JComboBox(new String[] {"WriterFormatName","ReaderFormatName"} ); ImageList list = new ImageList(); //----インナー(内部)クラス リスト------------------------------------- class ImageList extends JList { DefaultListModel listModel = new DefaultListModel(); //リスト操作用 ImageList(){//コンストラクタ setModel(listModel); setPreferredSize(new Dimension(240, 180) ); //望むサイズ指定 setWriterFormatName();//書き込み可能な画像ファイルの種類 } void setList(String []array){ listModel.clear();//リスト項目クリア for(int i = 0; i < array.length; i++){ listModel.add(i,array[i]);//挿入 } } void setWriterFormatName(){//書き込み可能な画像ファイルの種類をセット String[] formats = javax.imageio.ImageIO.getWriterFormatNames(); setList(formats); } void setReaderFormatName(){//読み込み可能な画像ファイルの種類をセット String[] formats = javax.imageio.ImageIO.getReaderFormatNames(); setList(formats); } }//----インナー(内部)クラスの終端-------------------------------------------- public ImageFormatPanel(){//コンストラクタ this.setLayout(new BorderLayout()); this.add(comboBox, BorderLayout.NORTH); this.add(new JScrollPane(list), BorderLayout.CENTER); //ItemListener itemProc = new ItemProc();メソッドの中の下で定義したクラス名は使えません。 //----インナー(内部)クラス インターフェイス-------(匿名クラスで作れます)---------------------- class ItemProc implements ItemListener { public void itemStateChanged(ItemEvent e){//ItemListenerの実装メソッド //項目を変更した時、選択解除前と新しい選択の2つが呼び出されます。 if (e.getStateChange() == ItemEvent.SELECTED){//選択時 int i = comboBox.getSelectedIndex(); if (i == -1) return; String s = (String)comboBox.getSelectedItem(); if (s.equals("WriterFormatName")){ list.setWriterFormatName();//書き込み可能な画像ファイルの種類をセット }else if (s.equals("ReaderFormatName")) { list.setReaderFormatName();//読み込み可能な画像ファイルの種類をセット } } } }//----インナー(内部)クラスの終端-------------------------------------------- ItemListener itemProc = new ItemProc(); //上で定義した内部クラスを生成 comboBox.addItemListener(itemProc); } } public class ImageFormatList extends JApplet { public ImageFormatList(){ this.setContentPane(new ImageFormatPanel());//上記パネルをフレームのパネルとして設定 } public static void main(String []args){ ImageFormatListFrame frame = new ImageFormatListFrame(); frame.pack(); frame.setVisible(true); } }