public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTex

Similar documents
public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

ソフトウェア基礎演習 課題

次の演習課題(1),(2)のプログラムを完成させよ

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

Java言語 第1回

2

ガイダンス

ガイダンス

ガイダンス

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

Microsoft PowerPoint - swing2.ppt

Java言語 第1回

PowerPoint Presentation

Java 2 - Lesson01

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

B 10 : N ip2003f10.tex B : 9/12/ :02 p.1/71

ガイダンス

GUIプログラムⅤ

text_12.dvi

ガイダンス

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

< F2D B838A835882CC8CF68EAE2E6A7464>

2

Microsoft PowerPoint - swing3.ppt

オブジェクト指向プログラミング・同演習 5月21日演習課題

< F2D834F838C A815B A CC>

ÿþ˜u#u·0¹0Æ0à0

PowerPoint Presentation

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

< F2D B825082CC96E291E82E6A7464>

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

< F2D E E6A7464>

Java 2 - Lesson01

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

text_13.dvi

GUIプログラムⅣ

Java プログラミング講習会 第 2 回 芝浦工業大学工学部情報工学科杉本徹 2017 年 3 月 27 日 public class Person { String familyname; String firstname; int age; } public void print() { Sy

Prog2_10th

Microsoft PowerPoint - prog09.ppt

1 Java Java GUI , 2 2 jlabel1 jlabel2 jlabel3 jtextfield1 jtextfield2 jtextfield3 jbutton1 jtextfield1 jtextfield2 jtextfield3

GUIプログラムⅡ

Microsoft PowerPoint - prog09.ppt

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

< F2D A838B838D96402E6A7464>

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

......() JButton

< F2D82B682E182F182AF82F12E6A7464>

PowerPoint プレゼンテーション

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

Java 2 - Lesson01

< F2D92DE82E8914B82CC977088D32E6A7464>

Prog2_9th

Java 2 - Lesson01

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

Prog1_12th

< F2D A839382CC906A2E6A7464>

2

< F2D825282CC947B909482CC A815B83682E6A>

Prog1_10th

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

自宅でJava言語の開発環境を作る方法

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

Microsoft PowerPoint - prog12.ppt

< F2D F B834E2E6A7464>

5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;

<4D F736F F F696E74202D AC C8899E D834F E >

< F2D82518CC282CC D2E6A7464>

Java - Visual Editor

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Microsoft PowerPoint - OOP.pptx


Programming-C-9.key

Prog2_11th

PowerPoint プレゼンテーション

GEC-Java

2

最初に

Microsoft Word - Java4.DOC

PowerPoint プレゼンテーション

Prog1_12th

アプレットⅢ

JAVA とテンプレート

Microsoft PowerPoint - OOP.pptx

問1

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

Prog2_15th

< F2D89BA8EE882C E6A7464>

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

応用プログラミング 2004/11/23 データの入出力 データの入出力データをキーボードからコンピュータに入力することや CRT に表示すること, さらにハードディスク (HDD) や MO などに保存されているファイルからデータをコンピュータに読み込むことや ( 逆に ) データをこれらの装置に

JavaプログラミングⅠ

プログラミングA

問題1 以下に示すプログラムは、次の処理をするプログラムである

TestDesign for Web

Transcription:

ソフトウェア基礎演習課題 20061206 以下のような GUI 画面を表示するプログラムを完成させなさい 前回演習で作成したプログラムにイベント処理を追加します 注意 : ファイル名が同じものがあるので 課題毎にディレクトリーを分ける等してください ( 簡易レジスター ) 概略仕様 : 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 6, 2006) と左寄せ表示 ) を持つ (1) コントロールクラス (main メッソドを含むクラス ) は Kadai20061206_01 とし 以下のようなものとする Kadai20061206_01.java コントロールクラス public class Kadai20061206_01 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai20061206_01"); (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;

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; 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;

// JDialog インスタンス化 JDialog dialog = new JDialog(frame, " バージョン "); // JPanel のインスタンス化 JPanel panel = new JPanel(); // コンポーネントのインスタンス化 JLabel label = new JLabel("Version 1.0 (released on December 6, 2006)", 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; 課題 20061206_02( 簡易エディター ) 概略仕様 : 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 6, 2006) と左寄せ表示 ) を持つ (1) コントロールクラスは Kadai20061206_02 とし 以下のようなものとする 課題 20061206_02 Kadai20061206_02.java コントロールクラス

public class Kadai20061206_02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai20061206_02"); (2) フレームのクラス名は MyFrame とし 以下のようなものとする 課題 20061206_02 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) ボタン 開く に対応したアクションリスナークラスを作成する 課題 20061206_02 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;

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) ボタン 保存 に対応したアクションリスナークラスを作成する 課題 20061206_02 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; 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) メニューアイテム バージョン に対応したアクションリスナークラスを作成する 課題 20061206_02 MenuListener.java MenuItem に対するイベントリスナー public class MenuListener implements ActionListener { private JMenuItem menuitem; MenuListener(JFrame frame, JMenuItem menuitem) { this.frame = frame; this.menuitem = menuitem; // JDialog インスタンス化 JDialog dialog = new JDialog(frame, " バージョン "); // JPanel のインスタンス化 JPanel panel = new JPanel(); // コンポーネントのインスタンス化 JLabel label = new JLabel("Version 1.0 (released on December 6, 2006)", 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);