| 2012/01/23 | スピナー について | Android |
| 2011/12/30 | レーティングバー/Form Stuff について | Android |
| 2011/12/23 | トグルボタン/Form Stuff について | Android |
| 2011/12/18 | ラジオボタン/Form Stuff について | Android |
| 2011/12/05 | チェックボックス/Form Stuff について | Android |
| 2011/11/22 | 編集テキスト(入力ボックス)/Form Stuff について | Android |
| 2011/11/15 | カスタムボタン/Form Stuff について | Android |
| 2011/09/11 | Time Picker について | Android |
| 2011/08/31 | Date Picker について | Android |
| 2011/08/17 | List View について | Android |
| スポンサードリンク | ||
|
|
java.awt.Componetクラス
前回はjava.awtパッケージのクラスにどのようなものがあるかみました。そしてGUIの主要な部品であるボタン、チェックボックス、ラジオボタン、スクロールなどはComponetクラスとそのサブクラスにあることがわかりました。今回はjava.awt.Componetクラスとそのサブクラスについてみていきます。
Componetクラスについて
Java Platform SE 6ドキュメントから説明を引用します。
「コンポーネント」は、画面に表示でき、ユーザーと対話できるグラフィカルな表現を持つオブジェクトです。コンポーネントとしては、典型的なグラフィカルユーザーインタフェースのボタン、チェックボックス、スクロールバーなどがあります。
Component クラスは、メニューに関連していない Abstract Window Toolkit コンポーネントの抽象スーパークラスです。また、Component クラスを直接拡張して軽量コンポーネントを生成することもできます。軽量コンポーネントは、ネイティブな不透明ウィンドウに関連していないコンポーネントです。
Componentクラスは抽象クラスらしいので、このクラスを直接インスタンスして使えません。拡張して使って下さいみたいなことも説明に書かれていますが、独自で拡張するのはある程度Javaの力がついてからにして今はサブクラスを使いこなそうと思います。
Componentクラスのサブクラスは共通してComponentクラスのメソッドを使えるわけですが、このメソッドがかなり多くてまとめるの大変なのでリンクを貼ります。 Java Platform SE 6ドキュメント>Componet を参考にしてください。
Componetクラスのサブクラス
「JavaTM Platform, Standard Edition 6 API 仕様 」の「パッケージ java.awt」と「パッケージ java.awt の階層」を参考にしてComponetクラスのサブクラスについて表にしました。
上記サブクラスを大きく2つに分けるとContainerクラス関連とそれ以外のクラスです。
Containerクラスの説明をJava Platform SE 6ドキュメント>Containerから引用します。
総称 Abstract Window Toolkit (AWT) コンテナオブジェクトは、ほかの AWT コンポーネントを含むことができるコンポーネントです。
コンテナに追加されるコンポーネントはリスト中に入れられます。リストの順番は、コンテナ中の前面から後面へコンポーネントがスタックされる順番を表します。コンテナにコンポーネントを追加するときにインデックスが指定されないと、リストの最後尾に追加され、最後尾にスタックされます。
Containerクラス関連は他のコンポーネントを含むことができ、それ以外のクラスは含むことができません。

次回から詳しく各クラスについてみていきますが、まずはContainerクラスとそのサブクラスからみていこうと思います。
|
|
新着記事を取得して表示する
ブログのトップページに新着記事一覧を表示していたが、以前は自分のブログをRSSで取得し表示するものだった。記事にiframe対応にしてからRSSがうまく取得できなくなったようなので、直接データを取得して表示する方法に変更しようと思う。
新着記事のデータを取得する
wordpressの記事を取得するのに「get_posts」関数を使います。使い方などは「wordpress日本語ドキュメント」を参考にしました。
今回は
- 表示件数は最大10件
- 投稿作成日で並べる
- 並び順は降順である
- 表示項目は「投稿作成日、投稿タイトル、投稿カテゴリ」である
にします。1~3はデータを取得する為の条件でパラメータとして指定します。各パラメータのパラメータ名と値は次のようになります。
| パラメータ名 | 値 | 説明 | パラメータ名=値 |
|---|---|---|---|
| numberposts | 10 | 表示件数は最大10件 | numberposts=10 |
| orderBy | date | 投稿作成日で並べる | orderBy=date |
| order | DESC | 並び順は降順である | order=DESC |
各「パラメータ名=値」を「&」で結合した文字列を「get_posts」関数の引数として渡します。
$new_info = get_posts("numberposts=10&orderBy=date&order=DESC");
取得データをみてみると次のようになりました。
Array
(
[0] => stdClass Object
(
[ID] => 1717
[post_author] => 1
[post_date] => 2010-02-12 02:33:38
[post_date_gmt] => 2010-02-11 17:33:38
[post_content] => 省略
[post_title] => 変数の定義・代入・参照
[post_category] => 0
[post_excerpt] =>
[post_status] => publish
[comment_status] => open
[ping_status] => open
[post_password] =>
[post_name] => 省略
[to_ping] =>
[pinged] =>
[post_modified] => 2010-02-12 02:36:00
[post_modified_gmt] => 2010-02-11 17:36:00
[post_content_filtered] =>
[post_parent] => 0
[guid] => http://memories.zal.jp/WP/?p=1717
[menu_order] => 0
[post_type] => post
[post_mime_type] =>
[comment_count] => 0
)
[1] => stdClass Object
(
[ID] => 1716
以下省略
各記事の情報はオブジェクトとして持っているようです。「get_posts」関数は、取得した記事数のオブジェクトを配列で返します。
このレスポンス値の中で今回表示に必要な項目をまとめます。
| メンバ変数 | 説明 |
|---|---|
| post_date | 投稿作成日 |
| post_title | 投稿タイトル |
| guid | 記事詳細ページへのリンク |
カテゴリですが、「post_category」から取得できるのかと思ったらどの記事も「0」で違うようです。なので別の方法で各記事のカテゴリを取得します。
各記事のカテゴリを取得する
wordpressの記事を取得するのに「get_the_category」関数を使います。
この関数は記事IDを引数で渡すと、その記事のカテゴリ情報を配列で返します。
$category_obj = get_the_category(記事ID);
取得データをみてみると次のようになりました。
Array
(
[0] => stdClass Object
(
[term_id] => 47
[name] => Javaの基本
[slug] => java_base
[term_group] => 0
[term_taxonomy_id] => 47
[taxonomy] => category
[description] =>
[parent] => 45
[count] => 4
[object_id] => 1717
[cat_ID] => 47
[category_count] => 4
[category_description] =>
[cat_name] => Javaの基本
[category_nicename] => java_base
[category_parent] => 45
)
)
各カテゴリの情報はオブジェクトとして持っているようです。各記事は複数のカテゴリを登録することができるので、カテゴリの登録数分のオブジェクトを配列で返しています。
今回表示に必要な項目をまとめます。
| メンバ変数 | 説明 |
|---|---|
| cat_name | カテゴリ名 |
「name」と「cat_name」の違いがよくわからないのですが、また詳しく調べてみたいと思います。今回は「cat_name」を使いました。
新着記事一覧を表示する
記事データとカテゴリデータの取得の仕方がわかったので、実際に取得し表示していきます。
$new_info = get_posts("numberposts=10&orderBy=date&order=DESC");
if(empty($new_info)){
}else{
echo '<div style="padding:0px;margin-top:10px;margin-bottom:18px">';
echo '<div style="border-style:double;padding:5px;font-weight:bold;background-color:#FFFFcc">新着記事</div>';
echo '<table style="padding:10px;" border="0" width="100%">';
foreach($new_info as $object){
//カテゴリ取得
$category_obj = get_the_category($object->ID);
$category = "";
$i = 0;
foreach($category_obj as $cat_obj){
if($i > 0) $category .= "/";
$category .= $cat_obj->cat_name;
$i++;
}
echo "<tr>";
echo "<td style='width:80px;font-size:11px'>".date('Y/m/d',strtotime($object->post_date))."</td>";
echo "<td>";
echo "<a href=\"{$object->guid}\">".$object->post_title."</a>";
echo "</td>";
echo "<td style='width:140px;font-size:12px'>{$category}</td>";
echo "</tr>";
}//END foreach
echo "</table>";
echo '</div>';
}//END if
setup_postdata($object);
1行目で新着記事の情報を取得しています。2行目でデータが取得できたか確認し、取得できれば4行目から表示処理に入ります。
取得したデータは配列に格納されていました。7行目から配列の要素分だけ繰り返しながら各記事の情報を表示していきます。
foreach($new_info as $object){
各記事を表示する処理
}
記事の情報はオブジェクトとして格納されていました。繰り返しながら各オブジェクトは変数$objectに代入されているので、表示する値は次のようになります。
| 取得値 | 説明 |
|---|---|
| $object->post_date | 投稿作成日 |
| $object->post_title | 投稿タイトル |
| $object->guid | 記事詳細ページへのリンク |
9行目でカテゴリ情報を取得しています。カテゴリは複数登録できるので、11~16行目では各カテゴリ名をスラッシュ区切りにした文字列を作成しています。
| 取得値 | 説明 |
|---|---|
| $cat_obj->cat_name | カテゴリ名 |
新着記事一覧に必要な情報を全て取得できたので、後はテンプレートにタグでデザインを作りながら表示して終わりです。
|
|
java.awtに属するクラス
今回は「java.awtに属するクラス」についてみていきます。まずはjava.awtでどんなことができるか簡単に把握する為、java.awtのクラスをまとめました。参考にしたのは「JavaTM Platform, Standard Edition 6 API 仕様 」の「パッケージ java.awt」と「パッケージ java.awt の階層」です。
java.awtに属するクラス
GUIの主要な部品であるボタン、チェックボックス、ラジオボタン、スクロールなどはコンポーネントクラスとそのサブクラスにあることがわかりました。次回はこれらのクラスについて詳しくみていきたいと思います。
|
|
Java Foundation Classes
最近忙しくJavaの勉強も中断していましたが、勉強再開します。2ヶ月前ぐらいまでJavaの文法や構文まで勉強終わってたのでこれからは主にJavaのGUIについてみていきます。
今回はJavaのGUIクラスにはどのようなものがあるのかを中心にみていきます。
Java Foundation Classes
JavaのGUIクラスにはどのようなものがあるか調べていると「Java Foundation Classes」というGUIを構築するためのグラフィカルフレームワークがありました。詳しくはwikipediaを引用します。
Java Foundation Classes (JFC) は ポータブルなJavaベースのGUIを構築するためのグラフィカルフレームワークである。JFGはAbstract Window Toolkit (AWT)、Swing、Java 2Dから成る。共にそれらは、基礎を成し、ユーザインタフェースシステムがWindowsであろうとMac OS XであろうとLinuxであろうと、Javaプログラムに一貫したユーザインタフェースを提供する。
AWTは他の2つのインタフェースライブラリよりも古く、ホストプラットフォームのネイティブなグラフィクス機能をもとにした単なるラッパーに過ぎないことで厳しく批評された。それはAWTの標準ウィジェットがこれらのネイティブウィジェットの能力に頼っており、ホストプラットフォーム間の違いも意識することをデベロッパーに要求していることを意味した。
Internet Foundation Classesと呼ばれる代替グラフィックライブラリはネットスケープ社によりプラットフォーム非依存コードになるよう開発された。最終的に、サン・マイクロシステムズ社はウィジェットのLook and feel置換機能を加えた"Swing"に他の技術とIFCを併合した。これにより Swingプログラムはコードとしてはプラットフォーム非依存になり、同時にネイティブアプリケーションの外観を擬似的に再現できるようになった。
Abstract Window Toolkit (AWT)
AWTをもう少し詳しくみてみます。wikipediaを引用しています。
AWTとは Javaの独自のプラットフォーム非依存 ウィンドウシステム、グラフィックス、ユーザインタフェース(UI)、ウィジェット・ツールキットのことである。AWTは現在はJava Foundation Classes (JFC)に含まれ、Javaプログラム用グラフィカルユーザインタフェース(GUI)を提供する標準APIの一部となっている。
サン・マイクロシステムズは1995年にJavaを最初にリリースしたとき、AWTは、基礎を成すネイティブなユーザインタフェースの上に抽象の非常に乏しいレベルだけ提供した。言い換えれば、AWTを使って書かれたGUIプログラムはWindows上で動くネイティブなMicrosoft Windowsアプリケーションにそっくりだが、Macなどの他のOSではネイティブな Apple Macintoshのようにそっくりになるということである。
J2SE 1.2では、AWTのウィジェットはSwingツールキットのウィジェットに大部分が取って代わった。AWTはGUIイベントサブシステムとネイティブなウィンドウシステムと、Swingが頼る構造的な土台を提供するJavaアプリケーションとの間のインターフェースの中核の提供を継続する。
「Abstract Window Toolkit」とは日本語に直すと「抽象クラスの集合体」となります。「AWT」はネイティブウィジェットの能力に頼っているので、見た目もOSによって変わりますし、機能もOSで使用できるものしかできないようです。またAWTコンポーネントは大量のリソースを消費するので、AWTコンポーネントのことを「重量コンポーネント」と呼び、これに対して比較的軽くなったSwingコンポーネントを「軽量コンポーネント」と呼びます。
AWTの主なクラスは「パッケージ java.awt」に含まれており、各クラスについては後々詳しく記事にしていきたいと思います。
Swing
AWTをもう少し詳しくみてみます。wikipediaを引用しています。
Swingは、プログラミング言語JavaのGUI を構築するためのツールキット。同じくJavaのGUIツールキットであるAWTを拡張したもの。
AWTはオペレーティングシステムのウィンドウシステムに準じたデザインになるのに対し、Swingで作成したGUIはJavaプログラム上で描画されるので、より柔軟な設計が可能となる。AWTに対しSwingのようなコンポーネントを軽量コンポーネント (Light Weight Component) と呼ぶ。
プラグイン可能なLook&Feelを持っているので、簡単にLook&Feelを切り替えることができる。 またAWTには無かった、スライダーやスピナ、ツリー表示をするコンポーネントなど高度なコンポーネントが用意されている。
「Swing」によるGUIはJavaプログラムで描写されるのでOSに依存しないで見た目や操作性は同じになります。また部品や機能もネイティブウィジェットの能力に頼っていないので、Javaが用意した多くのものが使えます。軽量コンポーネントが中心でリソースの消費も少ないです。
Swingの主なクラスは「パッケージ javax.swing」に含まれており、各クラスについては後々詳しく記事にしていきたいと思います。
Java 2D
Java 2Dをもう少し詳しくみてみます。wikipediaを引用しています。
Java 2D は、Javaにおいて2次元コンピュータグラフィックスの描画に使われるAPIである。Java 2D の描画操作は、図形を描き、それを塗りつぶし、ディスプレイ上でその結果を合成するものと言える。
Java 2D とその文書は JDK 6 の一部としてダウンロード可能である。Java 2D API クラスは JDK 6 の以下のパッケージにある。
- java.awt - Java Abstract Window Toolkit のメインパッケージ
- java.awt.geom - 直線、楕円、四角形などの基本的2次元図形に関する標準ライブラリ
- java.awt.font - 字体操作のためのライブラリ
- java.awt.color - 色を様々な方法で扱うためのツール群
- java.awt.image.renderable
- java.awt.print - 印刷のためのツール群
図形や主なパッケージの内容をみると図形を作成するクラスのようです。通常のアプリケーションではあまり使わない内容なので余裕があったら詳しくみていこうと思います。
今回はJavaのGUIクラスについてみてきました。通常のアプリ開発で利用する主なJava Foundation Classesは AWTとSwingです。SwingはAWTを拡張したもので基礎部分がjava.awtのクラスでできているので、まずはAWTの基本を勉強して、その後にSwingを勉強していきたいと思います。
|
|
Javaプログラミング能力認定試験
新しいプログラム言語を勉強しようと今年Javaについて勉強したけど、基本部分の勉強が大体終わったらモチベーションが下がっちゃいました。独学なので基本といっても漏れが多そう。とういことでモチベーションを上げて基本をしっかり身につける為、Javaの資格を何か取ろうと思います。
まずはどのようなJavaの資格があるか調べたら「Javaプログラミング能力認定試験」というものが。「Sun」が行っている資格もあるのだけど少し受験料が高いので、それはもっとJavaについて身につけてから。「Javaプログラミング能力認定試験」についてまとめてみます。
Javaプログラミング能力認定試験とは
公式サイトから引用します。
Javaプログラミング能力認定試験は、これからJavaを学び始める方を対象とした「3級」から、プログラマやシステム・エンジニアとして活躍されてい る方の保有スキルを客観的にアピールできる「1級」まで、幅広いスキルを測定します。
特に「1級」では、実際にPCを使用して、プログラムの仕様変更やこ れに伴うプログラミング作成(コーディング・入力・コンパイル・デバッグ)を行う、極めて実践的な試験として、高く評価されております。
Javaプログラミング能力認定試験の「2級」及び「3級」は、経済産業省「基本情報技術者試験 午後の試験」の出題形式も意識して作成されております。そのため、「基本情報技術者試験」の学習と連動した活用も多く見られます。
1級は実際に変更仕様書をみながらプログラムを変更して、期待通りの動作で動くか確認するという実践向けテスト。2級と3級は筆記テストだけのようです。難易度は、2級で「基本情報技術者試験」レベルのようなので、2級と3級は基本がわかっていれば合格できそうです。
試験内容
| 級 | 形式 | 内容 | 題数 |
|---|---|---|---|
| 1級 | 実技試験 ※パソコン使用 |
事前に公開している テーマプログラム(1,500行程度)に対する仕様変更、仕様追加に対応したプログラム作成(コーディング・入力・コンパイル・デバッグを含む)、および変更仕様書の作成を行う。 | 2問必須 |
| 2級 | 筆記試験 ・多肢選択 ・マークシート |
Java™プログラミングに必要なプログラミング知識・技能を出題範囲に従って出題 (プログラムの空欄を補完する問題を含む) |
テーマ別大問7問 ※6問必須,1問選択 |
| 3級 | テーマ別 ※大問6問必須 |
1級は実技試験のみ。2級と3級は筆記試験のみです。
詳しい出題範囲は「公式サイト>出題範囲」に詳しく書いてますのでこちらを参考にしてください。
自分は2級予定ですが、基本的なクラスライブラリやアップレットの勉強も必要そうです。
公式サイトではサンプル問題も準備してくれているので、どんな問題か出題されるか確認することもできます。
(公式サイト > Java™プログラミング能力認定試験>試験について>サンプル問題)
申込み期間、試験日
試験は1級は年1回、2級は年2回、3級は年3回あるようです。
詳しくは 公式サイト > Java™プログラミング能力認定試験>公開試験案内>公開試験案内 に記載されています。
申込みはオンラインで可能。申込み手続きをして、そのまま受験票をプリント印刷でもOK。郵送で受験票を受け取ることも可能。サンプル受験票をみると受験票に顔写真いらないようだ。これは助かる。証明写真撮るのって結構面倒なんだよね。変わりに本人証明するための免許書などがないと受験結果が無効となるらしい。
試験会場
札幌 東京 名古屋 大阪 福岡
「基本情報技術者試験」のように受験者数が多くないので全国にあるわけではないです。大都市圏に住んでいる人だけが対象となるかな。都道府県は固定のようだけど会場は毎年違うようなので公式サイトを参考にしてください。
公式サイト > Java™プログラミング能力認定試験>公開試験案内>試験予定会場
受験料
1級 7,200円(税込)
2級 5,900円(税込)
3級 4,900円 (税込)
安いか高いかは人それぞれですが、Sun Microsystemsが主催するJava認定試験(SJCシリーズ)と比べるとずっと安いです。
Sun Microsystemsの受験料が同じぐらいなら確実にそっちを受験したのですが、勉強中の段階で受けるには高すぎます。ということで、まずは自分は「Javaプログラミング能力認定試験」を受けることにしました。ただ、資格の知名度はSun Microsystemsの方がずっとあるので、資格を使って就職活動などするならそっちの方がいいかもしれません。
試験対策
勉強の方法が結構迷う。知名度が低いのか対策問題集が全くない。あるのは過去問題集だけ。
それもテキストの過去問題集はウイネット教材のみで、おまけに「よくある質問」をみると書店にはなくて直接販売だけのようだ。あとは、メディアファイブ社の過去問対策ソフト。このソフトは過去問題の一部だけを集めているようなので、買うならウイネット教材の方かな。同じ過去問題集ならどちらか一方でいいでしょう。
過去問題は試験直前に買うとして、それまでの勉強方法が迷う。
「基本情報技術者試験」と同等レベルと書かれているので、「基本情報技術者試験>午後Java」の問題で勉強するか、Sun Microsystems認定試験の「SJC-A」や「SJC-P」の問題で勉強するか。自分はJavaの力がついたらSun Microsystems認定試験も受験してみたいので、こちらで勉強してみようかな。


