}これでfout.datという名前のファイルができあがるはずです。00000011234は0x4d2だったのでその下1バイトが書き込まれました。}これでdout.datという名前のファイルができあがるはずです。書き込んだデータを読み出して画面に表示するプログラムを作ってください。java.net.*;が必要です。URL("http://www.ocha.ac.jp/");でURLクラスのインスタンスが得られる。targetURL.openStream();でこれからInputStreamのインスタンスが得られる。InputStreamReader(istream);でこれからInputStreamReaderのインスタンスが得られる。インスタンスが得られる。ダウンロードして、cat.jpgというファイルを作るプログラムを作ってください。データはテキストじゃなくて、バイナリーです。ヒント1:InputStreamのインスタンスに対してread()メソッドを使うと1バイトのデータが得られます。読み終わると-1になります。1バイトのデータを書き出すなら、FileOutputStreamだけで可能です。fout.write(1バイト)で書き出します。出席番号+名前のフォルダにいれて、ZIP圧縮して提出してください。[#ia7ce1f8]上記の例では写真データを1バイトずつ読み書きしていました。InputStreamのメソッドを調べると、複数バイト単位で読み込むメソッドがあります。1024バイトずつ読み書きすることで、処理速度が向上すると期待できます。実際にどの程度(実行速度にして何倍くらい)性能向上するか確認してみましょう。実際に読み込まれたバイト数は整数として返されます。戻り値は、バッファに読み込まれたバイトの合計数。バイトを出力ストリームに書き込みます。datalength);とします。//をダウンロードして、cat.jpgというファイルを作るプログラムを作ってください。//データはテキストじゃなくて、バイナリーです。}ここでは1024バイトを読み込むことにしました。InputStreamのメソッドを見ると、available()というのがあります。この入力ストリームのメソッドの次の呼出しによって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。これを使えば、適切な長さを見積もれるかもしれません。[#mc747214]curlというコマンドがあります。cat.jpgなどとすると、ファイルとして保存できます。これに近いプログラムを作ってみましょう。[#wb66142e]上記の引数のURLをファイルにするプログラムを作ってください。cat.jpgのファイル取得でまとめて読むことでどれくらい速度が改善したかを、レポートにしてください。レポートの書式は任意です。レポートのファイルをまとめて、出席番号+名前のフォルダに入れて、圧縮して、12月10日の授業の開始時間に提出してください。[#xedfffec]プログラム12.1を参考にして、上記の、継承を使ったプログラムによるウィンドウの中に、Hello!という文字を出してみよう。[#p41c305c]上記のプログラムのJPanelのところをJButtonにしてみましょう。[#cb6cf696]プログラム12.2をみてください。貼付けられるのは一つのボタンだけのようです。2個のボタンを貼付け、それをContainerに貼付けることで複数のボタンを表示しています。http://gyazo.com/03c28df2419065241b8736b7b69d7fd3.pngプログラム12.2を参考にして、継承を使ったプログラムによるウィンドウの中に、2個のボタンを出してみよう。}ここではボタンを区別するために、インスタンス(への参照)を比較した。それ以外の方法もある。一つは、ボタンのテキストを入手することである。ボタンのテキストを入手してそれを比較しても良い。ボタンのテキストを表示するだけなら以下のようにしても良い。}もう一つは、ボタンにコマンドを書く方法である。ボタンにsetActionCommand(String)を定義しておくと、getActionCommand()で知ることができる。e.getActionCommand();で文字列を得られる。}でコマンド部分を印刷できる。[#sb6fece9]***プログラム12.4をやってください。[#q3f681b0]上で作った二つのボタンのプログラムに対して、レイアウトマネージャのFlowLayoutを使って、左寄せ、センタリング、右寄せを試してください。RIGHTなどの揃え方の指定がありますが、これをコンストラクタの引数で指定できるようです。addのところではレイアウト指定しないようです。[#ec2d7584]http://gyazo.com/649bbe400f96c8c31923bcf7e5aebbd4.png***演習:プログラム13.1のようにボタンを配置して、それぞれを押すと、それぞれのボタンの名前が表示されるプログラムを作ってください。CENTERと表示されるプログラム作るとわかりやすいかもしれません。すれば、プログラム13.1のボタンの名前を表示するプログラムが作りやすいと思います。以下のようにすると、ボタンの名前を印刷することができます。}プログラム12.4は継承を使っていないので以下のように書き直します。listenerとして自分自身を追加します。[#s05a9149]ボタンが一つしかないプログラムなので、ActionPerformedの中で、ボタン種類のチェックを省略してしまっているところが特徴です。[#xc59c932]このプログラムに、右のテキストフィールドをクリアするclearボタンを追加してください。こんなのをつくってください。http://gyazo.com/999f1e766551a994186cc3d159bde0bf.pngBorderLayoutでもできるようですが、私はGridLayour使ってみました。panel.add(clearbutton);ボタンが複数になるので、ActionPerformedの中で、ボタンを区別する必要があります。//演習ができそうにないという人は、飛ばして、次に進んでください。[#r6b71c7b]JListの型を指定しないとコンパイラの警告が出ます。警告を出さないためには、以下のように宣言すると良いようです。JList<String>(data);こんな感じです。[#o616a647]http://gyazo.com/dd4e103c011682b3a78b9ed0c8d5134b.pnghttp://gyazo.com/4755cce7280963b32050db455d265cc1.pngまずはシンプルなプルダウンメニューを作ってみましょう。このプログラムは何もしません。}メニューにはメニューを追加することもできます。上でitem3をメニューに変更すると、これにitemを追加できます。Listenerとして登録すれば、イベントを受け付けることができます。ここでは、メニューアイテムにcommandという情報をつけて、ActionPerformedではこれを使ってメニュー項目を区別しています。[#rba61398]演習ができそうにないという人は、飛ばして、次に進んでください。http://gyazo.com/2d9c3b6534e7b87fcd3ec22be00d5fed.png他のメニューの追加も試してみましょう。[#k36e1b9b]ちなみに、今のjavaのバージョンではボタンの色は変わらないようです。{の間違いのようです。Listenerなどをインプリメントします。以下のようにするとイベントをうけとれるます。Listenerを試してみましょう。e)コンポーネント上でマウス・ボタンを押してドラッグすると呼び出されます。e)ボタンを押さずにマウス・カーソルをコンポーネント上に移動すると呼び出されます。Listenerも実装してみましょう。したときに呼び出されます。e)コンポーネントにマウスが入ると呼び出されます。e)コンポーネントからマウスが出ると呼び出されます。e)コンポーネント上でマウスボタンが押されると呼び出されます。e)コンポーネント上でマウスボタンが離されると呼び出されます。