Top / Graphics / 2016 / ex10

グラフィックス基礎及び実習 2016年度 第10回 [edit]

注意 [edit]

プログラムの作成場所 [edit]

今回以降は,演習課題のプログラムを次のように整理しよう.

  • ディレクトリ ~/Graphics20XY/turtle にはかめさん関係のソースファイル,クラスファイルなど
  • ディレクトリ ~/Graphics20XY/g にはGUIやグラフィックス関係のソースファイル,クラスファイルなど(今回以降はほとんどこちら)
  • ディレクトリ ~/Graphics20XY には上記のどちらでもないファイルをおく

ディレクトリの作り方などを忘れた人は Docs/4UNIXBeginners へどうぞ.

アイコン用画像 [edit]

今日の演習では,アイコン用にいくつか画像を用いる. 以下のものをクラスファイルと同じ場所に保存しておくこと.

それぞれどんな画像かは,ImageMagickのdisplayコマンドを用いて確認できる.

$ display pochittona.png &

実行例の見た目について [edit]

この科目のページに示されたプログラムの実行例は,Mac OS X 上でのデフォルトの Look&Feel にそった見た目になっている. 実行環境が異なれば見た目も異なる場合があるので注意. それから,ウィンドウをキャプチャした画像をはり付けてあるだけなので,ボタンを押しても反応してくれません (^^)

課題A(self) 完成目標: 今回の実習終了まで [edit]

講義資料と教科書p.118を参考に,Helloクラスを元にして,下のような見た目の得られるクラスを作りなさい(G10exA).「「ねこボタン」ってなんやねん」の部分は,「ラベル」である.

G10exA.png

check

  • ちゃんと上の注意を読んで正しいディレクトリ内でソースを作成しましたか?
  • 空白部分に何が入るか考えなさい(白字で答えが書いてある)
  1. G10exAクラスのスーパークラスは  JPanel  クラスである(スーパークラスのスーパークラスもスーパークラスなので正解は複数ありますが,白字の答えは「最も近い親」です)
  2. G10exAクラスでは  3  つのインスタンス変数が宣言されている.そのうち2つは  JButton  クラスのオブジェクトを指すためのものである.
  3. G10exAクラスでは  0  個のインスタンスメソッド, 1  個のクラスメソッドが定義されている.クラスメソッドは  main  という名前である.
  4. G10exAクラスのコンストラクタ内で呼び出しているsetLayoutメソッドやaddメソッドは,このクラスのインスタンスメソッドである.より丁寧に書くなら,これらのメソッド名の前にいずれも「  this . 」をつけることができる. G10exAクラスでこれらが使えるのは,G10exAクラスが  JPanel  クラスのサブクラスであり, JPanel  クラスが Container クラスのサブクラスであるため,つまり,G10exAクラスが Container クラスのサブクラスであるため,これらのメソッドを Container クラスから  継承  しているからである.

課題B(self) 完成目標: 今回の実習終了まで [edit]

教科書p.128のリスト11.4のプログラムとp.129のリスト11.5のプログラムを参考にして,次のような表示をするプログラムを作成しなさい(G10exB). 次のことに注意.

  • コンボボックスのメニュー項目は自分で適当なものを考えればよい.
  • JComboBox は,Java 7 になる時に仕様が変更になっている.Java 6 までと Java 7 以降では書き方が異なるので注意(cf. 教科書 p.129).
  • 下側にはチェックボックスが2つある.右側のチェックボックスには「ねこチェックボックス」という表示があり,猫の画像をアイコンに使用している. リスト11.4を参考に,このチェックボックスの非選択時の画像には blackuni.jpg を,選択時の画像には whiteuni.jpg を用いることにしよう.
  • この図のようにコンポーネントを配置するには,BorderLayoutを用いたらよい.

G10exB.png

課題C(TA) 締切: 次回実習開始直後 [edit]

次のことをやりなさい.

  1. 課題Aのものと同じ3つのコンポーネント(ボタン2つとラベル)が横一列にならんだものを作りなさい.FlowLayout を用いること(G10exCFlow).
  2. 同様に,ラベルとボタンが2行2列にならぶようにしなさい(コンポーネントは3つしかないので,1カ所は空白のまま).GridLayoutを用いること(G10exCGrid).

注意:

  • FlowLayout クラスの使い方を間違えるひとが多いので注意.p.121 の仕様の説明を読むと,FlowLayout クラスのクラス変数 LEFT 等は,コンストラクタの第1引数に指定する値であることがわかります.Border クラスのクラス変数 CENTER 等のように,add メソッドの第2引数に指定するためのものではありません.add( hoge, FlowLayout.LEFT ); のように書いてもエラーにはなりませんが,間違いです.この文を読んでも意味がわからない人は,これまでの授業の内容をしっかり復習することを強くおすすめします.
  • GridLayout クラスのコンストラクタは,2引数のものを使うこと.ただし,p.123 から p.124 の説明を脚注を含めてよく読み,2つの引数のうちどちらか一方を0とすること.

課題S(おまけ) [edit]

次のことをやりなさい.

  1. 講義資料のQ2(ヒント:JRadioButtonはSwingのパッケージに含まれている)
  2. G10exBの左側のチェックボックスをラジオボタンに変更したプログラムを作成しなさい(G10exS)
  3. 以下のプログラムを作成し,その動作を確認しなさい(FileChooser)
    • 2つのウィンドウが重なって表示されるかもしれない.ウィンドウを移動させてみるとよいかも.
    • Java APIの中からJFileChooserクラスの説明を探して読もう.
  4. FileChooser を改造して,画像ファイルを選択したらその画像を表示する(最初に表示されていた画像を置き換える)ものにしなさい
    • 選択したファイルが画像でない場合のことは考えなくて構いません
    • ヒント1: 15行目,35,36行目を書くだけでいけます
    • ヒント2: JLabelクラスのインスタンスメソッド setIcon() を使おう

FileChooser.png


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-12 (日) 16:11:11 (1047d)