オブジェクト指向プログラミング演習課題 20071205 以下のような GUI 画面を表示するプログラムを完成させなさい 前回演習で作成したプログラムにメニューを追加します 注意 : ファイル名が同じものがあるので 課題毎にディレクトリーを分ける等してください 課題 20071205_01 講義資料内で紹介したメニュー処理の例を完成し 動作を確認せよ (1) コントロールクラス (main メッソドを含むクラス ) は Kadai20071205_01 とし 以下のようなものとする 課題 20071205_01 Kadai20071205_01.java コントロールクラス public class Kadai20071205_01 { public static void main(string[] args) { HelloSwing frame = new HelloSwing("Hello Swing"); (2) フレームのクラス名は HelloSwing とし 講義資料に基き作成しなさい ( イベントリスナーの登録部分を追加する ) 課題 20071205_01 HelloSwing.java コントロールクラス public class HelloSwing extends JFrame { // 部品はプライベートで宣言しておく private JPanel panel; private JScrollPane scroll; private JLabel label; private JTextArea textarea; private JFileChooser chooser = new JFileChooser(); // コンストラクター ( 別にメッソドを作成しても良い ) HelloSwing(String title) { // JFrameのインスタンス化 frame = new JFrame(title); // JTextAreaのインスタンス化 textarea = new JTextArea(" テキストが入力できます ", 10, 30); // JScrollPane のインスタンス化 scroll = new JScrollPane(textArea); scroll.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_always); scroll.setpreferredsize(new Dimension(500, 250)); // JPanel のインスタンス化 panel = new JPanel(); // JLabel のインスタンス化 label = new JLabel(" 右クリックでポップアップメニュー "); // コンポーネントの追加 panel.setlayout(new FlowLayout()); panel.add(label);
// JFrameのコンテントペインの取得 Container con = frame.getcontentpane(); // コンテントペインに JPanel, JScrollPane を配置 con.setlayout(new BorderLayout()); con.add(scroll, BorderLayout.CENTER); con.add(panel, BorderLayout.SOUTH); // JMenuBar, JtoolBar のインスタンス化 JMenuBar menubar = new JMenuBar(); JToolBar toolbar = new JToolBar(); toolbar.setfloatable(false); // JMenu, JPopupMenu のインスタンス化 JMenu file = new JMenu(" ファイル "); JMenu view = new JMenu(" 表示 "); JPopupMenu popup = new JPopupMenu(); // JMenuItemのインスタンス化 JMenuItem open = new JMenuItem(" 開く "); JMenuItem save = new JMenuItem(" 保存 "); JMenuItem exit = new JMenuItem(" 終了 "); JCheckBoxMenuItem tool = new JCheckBoxMenuItem(" ツールバー ", true); JMenu size = new JMenu(" フォントサイズ "); JMenuItem large = new JMenuItem(" 大きく "); JMenuItem small = new JMenuItem(" 小さく "); JMenuItem openpopup = new JMenuItem(" 開く "); JMenuItem savepopup = new JMenuItem(" 保存 "); // JTooBar 用 JButton のインスタンス化 JButton openbutton = new JButton(new ImageIcon("open.png")); JButton savebutton = new JButton(new ImageIcon("save.png")); // イベントリスナーを登録 講義資料に基き イベントリスナーの登録を行う // 他のイベントリスナー (" ツールバー ", " 大きく ", " 小さく ") は // 省略している // JMenuItemを追加 file.add(open); file.add(save); file.addseparator(); // セパレーター file.add(exit); view.add(tool); size.add(large); size.add(small); view.add(size); // JMenu に JMenu を追加することも可能 popup.add(openpopup); popup.add(savepopup); // JMenu, JButton を配置 menubar.add(file); menubar.add(view);
toolbar.add(openbutton); toolbar.add(savebutton); // JMenuBar, JToolBar をフレームに追加 // JMenuBarは setjmenubar() メッソドを使って frame に // JToolBarは add() メッソドを使ってコンテントペインに // それぞれ追加する frame.setjmenubar(menubar); con.add(toolbar, BorderLayout.NORTH); // フレームのセットアップ frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); (3) イベントリスナーの4つのクラスを以下のように作成する クラスは完成しているので そのままコピー & ペーストして使用して良い 課題 20071205_01 OpenListener.java 開く に対するイベントリスナー import javax.swing.filechooser.*; import java.io.*; public class OpenListener implements ActionListener { private JTextArea textarea; private JFileChooser chooser; OpenListener(JFrame frame, JTextArea textarea, JFileChooser chooser) { this.frame = frame; this.textarea = textarea; this.chooser = chooser; public void actionperformed(actionevent e) { int returnvalue = chooser.showopendialog(frame); // [Open File] 用 JFileChooser の可視化 // 戻り値では JFileChooser が閉じられたのが // OKボタンによるのか Cancel ボタンによるのかを識別 try { if( returnvalue == JFileChooser.APPROVE_OPTION ) { // OK ボタンで JFileChooser が閉じられた場合 File file = chooser.getselectedfile(); // 選択されたファイルの抽象パスを取得 FileReader fr = new FileReader(file); // 文字ファイル読み込み簡易ストリーム textarea.read(fr, null); // テキストエリアに文字列セット frame.settitle(file.getabsolutepath()); // フレームのタイトル変更 fr.close(); // 読み込みバッファのクローズ catch( Exception ex ) { ex.printstacktrace();
課題 20071205_01 SaveListener.java 保存 に対するイベントリスナー import javax.swing.filechooser.*; import java.io.*; public class SaveListener implements ActionListener { private JTextArea textarea; private JFileChooser chooser; SaveListener(JFrame frame, JTextArea textarea, JFileChooser chooser) { this.frame = frame; this.textarea = textarea; this.chooser = chooser; public void actionperformed(actionevent e) { int returnvalue = chooser.showsavedialog(frame); // [Save File] 用 JFileChooser の可視化 // 戻り値では JFileChooser が閉じられたのが // OKボタンによるのか Cancel ボタンによるのかを識別 try{ if( returnvalue == JFileChooser.APPROVE_OPTION ) { // OK ボタンで JFileChooser が閉じられた場合 FileWriter fw = new FileWriter(chooser.getSelectedFile()); // 選択されたファイルの抽象パスを取得 fw.write(textarea.gettext()); // テキストエリアの文字列をファイルに書き込み fw.close(); // 書き込みバッファのクローズ catch( Exception ex ) { ex.printstacktrace(); 課題 20071205_01 ExitListener.java 終了 に対するイベントリスナー public class ExitListener implements ActionListener { public void actionperformed(actionevent e) { System.exit(0);
課題 20071205_01 MouseEventHandler.java マウスイベントに対するイベントリスナー public class MouseEventHandler implements MouseListener { private JPopupMenu popup; MouseEventHandler(JFrame frame, JPopupMenu popup) { this.frame = frame; this.popup = popup; public void mousepressed(mouseevent e) { if( e.ispopuptrigger() ) { popup.show(frame, e.getx(), e.gety()); public void mousereleased(mouseevent e) { if( e.ispopuptrigger() ) { popup.show(frame, e.getx(), e.gety()); public void mouseclicked(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) { (4) 画像 open.png save.png をホームページからダウンロードする ( 簡易レジスター ) 概略仕様 : 1. フレーム内にはパネルが4つあり レイアウトは GridLayout(4, 1)(4 行 1 列のレイアウト ) とする 2. 一つ目のパネル内には ラベル ( 製品名 と左寄せ表示 ) とテキストフィールド ( サイズは 10 桁 ) があり レイアウトは FlowLayout() とする 3. 二つ目のパネル内には ラベル ( 個数 と左寄せ表示 ) とテキストフィールド ( サイズは 10 桁 ) があり レイアウトは FlowLayout() とする 4. 三つ目のパネル内にはボタンが二つ ( それぞれのラベルを 追加 合計 とする ) あり レイアウトは FlowLayout() とする 5. 四つ目のパネル内には ラベル ( 合計金額 と左寄せ表示 ) とテキストフィールド ( サイズは 10 桁 ) があり レイアウトは FlowLayout() とする 6. ボタン 追加 合計 のそれぞれにアクションリスナーを登録する 7. ボタン 追加 に対応したアクションリスナークラス AddListener を作成する このクラスは ボタンが押される度に 製品名 に付随するテキストフィールド内の文字列に対応する製品と 個数 に付随するテキストフィールド内の ( 文字列を整数に変換した ) 数字のペアを ProductCountList クラス型の変数に順次登録してゆく 8. ボタン 合計 に対応したアクションリスナークラス SumListener を作成する このクラスは ProductCountList クラス型の変数に登録されている製品名と個数を順次取り出し PriceList クラスに問い合わせる (getprice メッソドを使用する ) ことによって製品名からその価格を得
た後に 価格 個数の総和を計算し その値を 合計金額 に付随するテキストフィールドに書き込む 9.ProductCountList クラスは ArrayList クラスのフィールド ( メンバー変数 ) 等を持つ ArrayList の要素は ProductCount クラスであり ProductCount クラスは String 型フィールド ( メンバー変数 )product と int 型フィールド ( メンバー変数 )count 等を持つ 10.PriceList クラスは ArrayList クラスのフィールド ( メンバー変数 ) 等を持つ ArrayList の要素は ProductPrice クラスであり ProductPrice クラスは String 型フィールド ( メンバー変数 )product と int 型フィールド ( メンバー変数 )price 等を持つ ( 以上が前回作成したプログラム ) 11.MyFrame クラスにメニューを追加する メニューは ヘルプ とし メニューアイテムは バージョン とする 12. メニューアイテム バージョン には アクションリスナーを登録する 13. メニューアイテム バージョン に対応したアクションリスナー Menulistener を作成する このクラスは Jdialog クラスのウィンドウを表示し 1つのパネルを持ち そのパネル内には一つのラベル ( Version 1.0 (released on December 5, 2007) と左寄せ表示 ) を持つ (1) コントロールクラス (main メッソドを含むクラス ) は Kadai20071205_02 とし 以下のようなものとする Kadai20071205_02.java コントロールクラス public class Kadai20071205_02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai20071205_02"); (2) フレームのクラス名は MyFrame とし 以下のようなものとする MyFrame.java フレーム public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTextField text1; private JLabel label2; private JTextField text2; private JButton button1; private JButton button2; private JLabel label4; private JTextField text4; private JMenuItem menuitem; private ProductCountList pcl = new ProductCountList(); MyFrame(String title) { // JFrame インスタンス化 frame = new JFrame(title); // JPanel のインスタンス化 ( 一つ目 ) panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel();
panel4 = new JPanel(); // コンポーネントのインスタンス化 label1 = new JLabel(" 製品名 ", JLabel.LEFT); text1 = new JTextField(10); label2 = new JLabel(" 個数 ", JLabel.LEFT); text2 = new JTextField(10); button1 = new JButton(" 追加 "); button2 = new JButton(" 合計 "); label4 = new JLabel(" 合計金額 ", JLabel.LEFT); text4 = new JTextField(10); panel1.setlayout(new FlowLayout()); // コンポーネントの追加 panel1.add(label1); panel1.add(text1); panel2.setlayout(new FlowLayout()); // コンポーネントの追加 panel2.add(label2); panel2.add(text2); panel3.setlayout(new FlowLayout()); // コンポーネントの追加 panel3.add(button1); panel3.add(button2); panel4.setlayout(new FlowLayout()); // コンポーネントの追加 panel4.add(label4); panel4.add(text4); // ActionListener を追加 AddListener al = new AddListener(text1, text2, pcl); button1.addactionlistener(al); SumListener sl = new SumListener(text4, pcl); button2.addactionlistener(sl); // JFrame のコンテントペインを取得 Container con = frame.getcontentpane(); // レイアウトマネージャー (GridLayout を使用 ) con.setlayout(new GridLayout(4, 1)); // パネルの追加 con.add(panel1); con.add(panel2); con.add(panel3); con.add(panel4); // JMenuBar のインスタンス化 1 menubar = new 1 (); // JMenu のインスタンス化 2 menu = new 2 (" ヘルプ "); // JMenuItem のインスタンス化 menuitem = new 3 (" バージョン "); // ActionListener を追加 MenuListener ml = new MenuListener(frame, menuitem); menuitem.addactionlistener(ml); // JMenuItem の追加 menu. 4 (menuitem); // JMenu の追加
menubar. 4 (menu); // JMenuBar の追加 frame. 5 (menubar); // JFrame のセットアップ frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); (3) ボタン 追加 に対応したアクションリスナークラスを作成する ( 前回と全く同じもの ) AddListener.java Add Button に対するイベントリスナー public class AddListener implements ActionListener { private JTextField text1; private JTextField text2; private ProductCountList pcl; AddListener(JTextField text1, JTextField text2, ProductCountList pcl) { this.text1 = text1; this.text2 = text2; this.pcl = pcl; public void actionperformed(actionevent e) { try { pcl.setproductcount(text1.gettext(), Integer.parseInt(text2.getText())); catch( NumberFormatException ex ) { (4) ボタン 合計 に対応したアクションリスナークラスを作成する ( 前回と全く同じもの ) SumListener.java Sum Button に対するイベントリスナー public class SumListener implements ActionListener { private JTextField text; private ProductCountList pcl; SumListener(JTextField text, ProductCountList pcl) { this.text = text; this.pcl = pcl;
public void actionperformed(actionevent e) { int totalprice = 0; PriceList pl = new PriceList(); for( int i = 0; i < pcl.size(); i++ ) { ProductCount pc = pcl.getproductcount(i); String seihin = pc.getproduct(); int kosu = pc.getcount(); totalprice += pl.getprice(seihin)*kosu; text.settext(integer.tostring(totalprice)); (5) メニューアイテム バージョン に対応したアクションリスナークラスを作成する クラスは完成しているので そのままコピー & ペーストして使用して良い MenuListener.java MenuItem に対するイベントリスナー public class MenuListener implements ActionListener { private JMenuItem menuitem; MenuListener(JFrame frame, JMenuItem menuitem) { this.frame = frame; this.menuitem = menuitem; public void actionperformed(actionevent e) { // JDialog インスタンス化 JDialog dialog = new JDialog(frame, " バージョン "); // JPanel のインスタンス化 JPanel panel = new JPanel(); // コンポーネントのインスタンス化 JLabel label = new JLabel("Version 1.0 (released on December 5, 2007)", JLabel.LEFT); panel.setlayout(new FlowLayout()); // コンポーネントの追加 panel.add(label); // JDialog のコンテントペインを取得 Container con = dialog.getcontentpane(); con.setlayout(new FlowLayout()); // パネルの追加 con.add(panel); // JDialog のセットアップ dialog.setdefaultcloseoperation(jdialog.dispose_on_close); dialog.pack(); dialog.setvisible(true);
(6) その他のクラス (4つある) は以下のようになる ( 前回と全く同じもの ) ProductCountList.java 製品 (product) の個数のリスト import java.util.*; public class ProductCountList { private ArrayList<ProductCount> pcl = new ArrayList<ProductCount>(); public int size() { return pcl.size(); public ProductCount getproductcount(int index) { if( (0 <= index) && (index < pcl.size()) ) { return (ProductCount)pcl.get(index); else { return null; public void setproductcount(string product, int count) { ProductCount pc = new ProductCount(); pc.setproduct(product); pc.setcount(count); pcl.add(pc); ProductCount.java 製品 (product) の個数 public class ProductCount { private String product; private int count; public String getproduct() { return product; public int getcount() { return count; public void setproduct(string product) { this.product = product; public void setcount(int count) {
this.count = count; PriceList.java 製品 (product) とその価格 (price) のリスト import java.util.*; public class PriceList { private ArrayList<ProductPrice> productprice = new ArrayList<ProductPrice>(); private String[] productlist = {"SeihinA", "SeihinB", "SeihinC"; private int[] pricelist = {700, 1000, 1260; PriceList() { for( int i = 0; i < 3; i++ ) { ProductPrice pp = new ProductPrice(); pp.setproduct(productlist[i]); pp.setprice(pricelist[i]); productprice.add(pp); public int getprice(string product) { for( int i = 0; i < productprice.size(); i++ ) { ProductPrice pp = (ProductPrice)productPrice.get(i); if( product.equals(pp.getproduct()) ) { return pp.getprice(); return 0; ProductPrice.java 製品 (product) とその価格 (price) public class ProductPrice { private String product; private int price; public String getproduct() { return product; public int getprice() { return price; public void setproduct(string product) { this.product = product;
public void setprice(int price) { this.price = price; 課題 20071205_03( 簡易エディター ) 概略仕様 : 1. フレーム内には パネルが1つとスクロールパネルが1つあり レイアウトは BorderLayout() とする パネルを NORTH にスクロールパネルを CENTER に配置する 2. スクロールパネル内には テキストエリアがある スクロールパネルの属性は 縦スクロールバーを常に表示 スクロールパネルのサイズは 500 250 とする 3. パネル内にはボタンが二つ ( それぞれのラベルを 開く 保存 とする ) あり レイアウトは FlowLayout() とする 4. ボタン 開く 保存 のそれぞれにアクションリスナーを登録する 5. ボタン 開く に対応したアクションリスナークラス OpenListener を作成する このクラスは JFileChooser クラスを用いてファイルを開き その内容をテキストエリアに書き込む 6. ボタン 保存 に対応したアクションリスナークラス SaveListener を作成する このクラスは JFileChooser クラスを用いてファイルを作成又は開き テキストエリアの内容をそのファイルに書き込む ( 以上が前回作成したプログラム ) 7.MyFrame クラスにメニューを追加する メニューは ファイル ヘルプ とし ファイル のメニューアイテムは 開く 保存 とし ヘルプ のメニューアイテムは バージョン とする 8. メニューアイテム 開く 保存 バージョン のそれぞれにアクションリスナーを登録する 9. メニューアイテム 開く に対応したアクションリスナーは ボタン 開く に対応したアクションリスナー OpenListener とする 10. メニューアイテム 保存 に対応したアクションリスナーは ボタン 保存 に対応したアクションリスナー SaveListener とする 11. メニューアイテム バージョン に対応したアクションリスナー Menulistener を作成する このクラスは Jdialog クラスのウィンドウを表示し 1つのパネルを持ち そのパネル内には一つのラベル ( Version 1.0 (released on December 5, 2007) と左寄せ表示 ) を持つ (1) コントロールクラスは Kadai20071205_03 とし 以下のようなものとする 課題 20071205_03 Kadai20071205_03.java コントロールクラス public class Kadai20071205_03 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai20071205_03"); (2) フレームのクラス名は MyFrame とし 以下のようなものとする 課題 20071205_03 MyFrame.java フレーム public class MyFrame extends JFrame { private JPanel panel; private JScrollPane scroll; private JButton open; private JButton save; private JTextArea textarea;
private JMenuItem menuitem11; private JMenuItem menuitem12; private JMenuItem menuitem2; private JFileChooser chooser = new JFileChooser(); MyFrame(String title) { // JFrame のインスタンス化 frame = new JFrame(title); // コンポーネントの作成 textarea = new JTextArea(); textarea.setwrapstyleword(true); textarea.setlinewrap(true); // スクロールパネルのインスタンス化及びテキストエリアの追加 scroll = new JScrollPane(textArea); scroll.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_always); scroll.setpreferredsize(new Dimension(250, 250)); // JPanel のインスタンス化 panel = new JPanel(); // コンポーネントのインスタンス化 open = new JButton(" 開く "); save = new JButton(" 保存 "); // ActionListener を追加 OpenListener ol = new OpenListener(frame, textarea, chooser); open.addactionlistener(ol); SaveListener sl = new SaveListener(frame, textarea, chooser); save.addactionlistener(sl); panel.setlayout(new FlowLayout()); // コンポーネントの追加 panel.add(open); panel.add(save); // コンテントペインの取得 Container con = frame.getcontentpane(); // レイアウトマネージャー (BorderLayout を使用 ) con.setlayout(new BorderLayout()); // コンテントペインにパネルを追加 con.add(panel, BorderLayout.NORTH); con.add(scroll, BorderLayout.CENTER); // JMenuBar のインスタンス化 1 menubar = new 1 (); // JMenu のインスタンス化 2 menu1 = new 2 (" ファイル "); 2 menu2 = new 2 (" ヘルプ "); // JMenuItem のインスタンス化 menuitem11 = new 3 (" 開く "); menuitem12 = new 3 (" 保存 "); menuitem2 = new 3 (" バージョン "); // ActionListener を追加 menuitem11.addactionlistener(ol); menuitem12.addactionlistener(sl); MenuListener ml = new MenuListener(frame, menuitem2); menuitem2.addactionlistener(ml); // JMenuItem の追加 menu1. 4 (menuitem11); menu1. 4 (menuitem12); menu2. 4 (menuitem2);
// JMenu の追加 menubar. 4 (menu1); menubar. 4 menu2); // JMenuBar の追加 frame. 5 (menubar); // JFrame のセットアップ frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); (3) ボタン 開く に対応したアクションリスナークラスを作成する ( 前回と全く同じもの ) 課題 20071205_03 OpenListener.java Open Button に対するイベントリスナー import javax.swing.filechooser.*; import java.io.*; public class OpenListener implements ActionListener { private JTextArea textarea; private JFileChooser chooser; OpenListener(JFrame frame, JTextArea textarea, JFileChooser chooser) { this.frame = frame; this.textarea = textarea; this.chooser = chooser; public void actionperformed(actionevent e) { int returnvalue = chooser.showopendialog(frame); // [Open File] 用 JFileChooser の可視化 // 戻り値では JFileChooser が閉じられたのが // OK ボタンによるのか Cancel ボタンによるのかを識別 try { if( returnvalue == JFileChooser.APPROVE_OPTION ) { // OK ボタンで JFileChooser が閉じられた場合 File file = chooser.getselectedfile(); // 選択されたファイルの抽象パスを取得 FileReader fr = new FileReader(file); // 文字ファイル読み込み簡易ストリーム textarea.read(fr, null); // テキストエリアに文字列セット frame.settitle(file.getabsolutepath()); // フレームのタイトル変更 fr.close(); // 読み込みバッファのクローズ catch( Exception ex ) { ex.printstacktrace(); (4) ボタン 保存 に対応したアクションリスナークラスを作成する ( 前回と全く同じもの ) 課題 20071205_03
SaveListener.java Save Button に対するイベントリスナー import javax.swing.filechooser.*; import java.io.*; public class SaveListener implements ActionListener { private JTextArea textarea; private JFileChooser chooser; SaveListener(JFrame frame, JTextArea textarea, JFileChooser chooser) { this.frame = frame; this.textarea = textarea; this.chooser = chooser; public void actionperformed(actionevent e) { int returnvalue = chooser.showsavedialog(frame); // [Save File] 用 JFileChooser の可視化 // 戻り値では JFileChooser が閉じられたのが // OK ボタンによるのか Cancel ボタンによるのかを識別 try{ if( returnvalue == JFileChooser.APPROVE_OPTION ) { // OK ボタンで JFileChooser が閉じられた場合 FileWriter fw = new FileWriter(chooser.getSelectedFile()); // 選択されたファイルの抽象パスを取得 fw.write(textarea.gettext()); // テキストエリアの文字列をファイルに書き込み fw.close(); // 書き込みバッファのクローズ catch( Exception ex ) { ex.printstacktrace(); (5) メニューアイテム バージョン に対応したアクションリスナークラスを作成する クラスは完成しているので そのままコピー & ペーストして使用して良い 課題 20071205_03 MenuListener.java MenuItem に対するイベントリスナー public class MenuListener implements ActionListener { private JMenuItem menuitem; MenuListener(JFrame frame, JMenuItem menuitem) { this.frame = frame; this.menuitem = menuitem;
public void actionperformed(actionevent e) { // JDialog インスタンス化 JDialog dialog = new JDialog(frame, " バージョン "); // JPanel のインスタンス化 JPanel panel = new JPanel(); // コンポーネントのインスタンス化 JLabel label = new JLabel("Version 1.0 (released on December 5, 2007)", JLabel.LEFT); panel.setlayout(new FlowLayout()); // コンポーネントの追加 panel.add(label); // JDialog のコンテントペインを取得 Container con = dialog.getcontentpane(); con.setlayout(new FlowLayout()); // パネルの追加 con.add(panel); // JDialog のセットアップ dialog.setdefaultcloseoperation(jdialog.dispose_on_close); dialog.pack(); dialog.setvisible(true);