• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
15
0
0

読み込み中.... (全文を見る)

全文

(1)

あいあいスクール代表

畠 茂雄(はたけ しげお)

ViralBanner の作成方法

2010年1月31日更新

(2)

もくじ

今回作成するツールの紹介 ... 3

ソースコードの作成 ... 5

(1)ViralBanner.html のソースコード ... 6

(2)ViralBanner.java のソースコード ... 7

(3)参考:レイアウトマネージャについて ... 10

(3)

- 3 –

今回作成するツールの紹介

ViraBanner

このツールは、nozan さんが紹介している【

ヴァイラルダウンローダー

】っぽく作ったツールです。

【ヴァイラルダウンローダー】の実行画面を、今回、『

Javaアプレット

』で作ってみました。

ヴァイラルとは、「

クチコミ

」という意味で、ツールを口コミで、広めていこうとするものです。

↓詳しく知りたい方は、こちらを参照して下さい(直リンク)

<nozan さんの無料レポート>

勝手に延々と、あなたのブログへのアクセスや、メルマガ読者を増やしてしまう

秘伝のバイラルマーケティングツール!!

http://www.iischool.net/download/magic.pdf

<バナー広告のように設置した例>

(4)

<主な機能>

認証コード

」欄には、ダウンロードできる人だけが知っているコードを入力します。

入力された認証コードが正しければ、[

ダウンロード

]ボタンをクリックすると、指定したダウンロード先へジャンプ

します。

※正しくなければ、注意メッセージを表示します。

認証コードがわからない場合、[

認証コード取得

]ボタンを クリックすると、取得方法を案内するページにジャン

プします。

※サンプルでは、[

認証コード取得

]ボタンをクリックすると、表示された画面で、すぐ認証コードを見れるようにし

てありますが、ここは、メールアドレスを入力してもらうフォーム等を設置して、リストの取得や、メルマガへの

登録をうながす用途に使えます。

(5)

- 5 –

ソースコードの作成

今回必要なプログラムのソースファイルは、

ViralBanner.java ・・・ (1)

1つだけですが、ブラウザ表示を確認するために、HTML ファイル

ViralBanner.html ・・・ (2)

を利用します。(2)のファイルをブラウザで開くと、プログラムを呼んで、表示するようになっています。

なお、(1)のファイルをコンパイルすると、

ViralBanner.class

ViralBanner$ViralListener.class

という2つのクラスファイルが出来上がります。実際に利用する場合には、

この2つのクラスファイルを配置します。

今回、画像も使っているので、jpg またはgif形式の画像ファイルが別途必要になります。

↓↓↓コンパイルの方法等につきましては、こちらをご参照下さい。

自宅でJava言語の開発環境を作る方法(最新の情報に更新しています)

http://www.iischool.net/40/41/

(6)

(1)ViralBanner.html のソースコード

以下のコードをコピーして、『ViralBanner.html』というファイル名で保管します。

バナー広告によくあるサイズの幅468ピクセル、高さ60ピクセルの大きさで表示されるようにしています。

実際に、ブログツールとして設置するには、<

APPLET

>タグの部分だけをブログツール設置場所に書き込め

ばいいのですが、置き場所を

codebase=

に指定する必要があります。

クラスファイルを、http:// ~と指定できる場所に置く必要があります。ダウンロードファイルを置く方法と同

様に置いて下さい。

↓↓↓ブログツールに書き込むコードの例

(http:// ~の部分は自分のものに変更して下さい)

<APPLET

codebase=

"http://www.iischool.net/java/" code="ViralBanner.class" width=468 height=60></APPLET>

↓↓↓ここから ViralBanner.html のソースコード

<HTML>

<HEAD>

<TITLE>ViralBanner</TITLE>

</HEAD>

<BODY>

<

APPLET

code="ViralBanner.class" width=468 height=60></

APPLET

>

</BODY>

(7)

- 7 –

(2)ViralBanner.java のソースコード

以下のコードをコピーして、『ViralBanner.java』というファイル名で保管します。

その後、正常にコンパイルすると以下の2つのクラスファイルが出来上がります。

ViralBanner.class

ViralBanner$ViralListener.class

(1)で作成した ViralBanner.html を同じ場所に置いて、ViralBanner.html をブラウザでいて正常に表示される

か確認してみましょう。

// ViralBanner のソースコード

// 変更箇所(1)から変更箇所(8)の、8箇所を変更すればOKです。

// 利用するクラスが入ったパッケージをインポートします import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*;

public class ViralBanner extends JApplet {

// ここで、URL や認証コードをセットする変数を用意します URL u_download, u_ninsyo, u_viral;

JTextField textfield;

public void init() {

// JApplet クラスのデフォルトのレイアウトマネージャは、 // ボーダーレイアウト

Container fc = getContentPane();

// パネル1、2、3を作る JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel();

// パネル1は、グリッドレイアウト(2行×1列) GridLayout gl = new GridLayout(2, 1);

p1.setLayout(gl);

// パネル2、3は、フローレイアウト(左寄せ) FlowLayout fl = new FlowLayout(FlowLayout.LEFT); p2.setLayout(fl);

p3.setLayout(fl);

// ここで、URL の間違いがないか判断します try {

// ツールやレポートをダウンロードする URL をセットします

u_download = new URL("http://www.iischool.net/pdf/ViralTool.pdf"); // ←変更箇所(1)

// 認証コードを取得する URL をセットします

u_ninsyo = new URL("http://www.haatdesign.com/applet20/applet20.html"); // ←変更箇所(2)

// ボタン画像をクリックするとジャンプする先の URL をセットします

u_viral = new URL("http://heihou.biz/ViralDownloader/index.php?e=webmaster@iichiyoda.com"); // ←変更箇所(3)

} catch (MalformedURLException mue) {

System.err.println("URLが見つかりませんでした"); }

// Image クラス型変数に画像データを入れる(60×60 ピクセル程度の jpg または gif 画像) Image image = getImage(getCodeBase(),"./viraldown.jpg");// ←変更箇所(4)

// Image を ImageIcon クラスに変換する ImageIcon icon = new ImageIcon(image);

// アイコンのボタンを作る JButton img = new JButton(icon);

(8)

// アプレットの背景色を指定する //fc.setBackground(Color.yellow);

// パネルの背景色を指定する(Red,Green,Blue)を 0~255 の値で自由に指定します。 Color col = new Color( 255, 228, 225 ); // ←変更箇所(5)

// 指定した色にセットします(初期色として黄色をセット) col = Color.yellow; // ←変更箇所(6)(5)で変更した場合、この行は不要です。 // アプレットの背景色を指定します p1.setBackground(col); p2.setBackground(col); p3.setBackground(col); img.setBackground(col); // ツールやレポートの案内文をここに入れます // 全角26文字で埋めること 12345678901234567890123456

JLabel label1 = new JLabel("←このヴァイラルツールっぽいブログツールの作り方を無料プレゼント!");

// ↑↑↑ 変更箇所(7)↑↑↑

// ボタンなどを用意する

JLabel label2 = new JLabel("認証コード"); textfield = new JTextField("", 9); JButton b_download = new JButton("ダウンロード"); JButton b_ninsyo = new JButton("認証コード取得");

ViralListener al = new ViralListener();

b_download.addActionListener(al); b_ninsyo.addActionListener(al);

img.addActionListener(al);

// ラベル1のフォントを設定します

Font fo1 = new Font("SansSerif",Font.BOLD,13); label1.setForeground(Color.blue);

label1.setFont(fo1);

// ラベル2のフォントを設定します

Font fo2 = new Font("SansSerif",Font.BOLD,12); //p.setForeground(Color.black); label2.setFont(fo2); // パネル2にラベル1とボタンを載せます p2.add(label1); // パネル3にラベル2とボタンを載せます p3.add(label2); p3.add(textfield); p3.add(b_download); p3.add(b_ninsyo); // ボーダーレイアウトのコンテンツ区画(西)にボタン画像を載せる fc.add(img, BorderLayout.WEST); // パネル1の上下にパネル2とパネル3を配置する p1.add(p2); p1.add(p3); // ボーダーレイアウトのコンテンツ区画(中央)にパネル1を載せる fc.add(p1, BorderLayout.CENTER); } // ボタンが押された時の処理

class ViralListener implements ActionListener {

public void actionPerformed(ActionEvent ae) { String bname = ae.getActionCommand(); if (bname.equals("ダウンロード")) { // ここに認証コードをセットします↓↓↓ if(textfield.getText().equals("happyhappy")){ // ←変更箇所(8) // ツールやレポートをダウンロードする URL へジャンプする getAppletContext().showDocument(u_download); } else { String title = "警告"; String msg = "認証コードが違っています";

JOptionPane.showMessageDialog(null, msg, title, JOptionPane.WARNING_MESSAGE);

}

(9)

- 9 –

// 認証コードを取得する URL へジャンプする getAppletContext().showDocument(u_ninsyo); }else { // ボタン画像をクリックした時の URL へジャンプする getAppletContext().showDocument(u_viral); } } } }

おめでとう! あなたは

ブログツール開発者

になれました!

<補足>

今回のツールは、3つのレイアウトマネージャを以下のように組み合わせて使っています。

内部を2行1列の

グリッドに分割

グリッド内は、

フローレイアウト

(10)

(3)参考:レイアウトマネージャについて

複数のボタンなどのGUIコンポーネントを配置する場合、『レイアウトマネージャ』が使われます。

<利点>

 要素を配置する座標などを計算する必要がない

 ウィンドウのサイズ変更をすると自動的に配置を調節する

 OS等の環境の違いによりGUIコンポーネントのサイズは異なるが、これを適切に調節する

<レイアウトマネージャの種類>

パッケージ

名称(クラス名)

説 明

使用頻度

java.awt

FlowLayout

左から右へ流れるように配置する

GridLayout

サイズが等しい矩形を格子状に配置する

BorderLayout

上下右左中央の5つの場所に配置する(デフォルト)

CardLayout

各コンポーネントをカードとして扱う。1 度に1枚だけ表示する ○

GridBagLayout

異なる大きさのコンポーネントでも縦横に配置できる

javax.swing

BoxLayout

水平あるいは垂直に1列に配置する

OverlayLayout

コンポーネントを互いの上に重なり合うように配置する

ScrollPaneLayout

スクロール可能なビューのレイアウトに使われる

ViewportLayout

ビューポート(窓)へのレイアウトに使われる

※よく利用されるのは、赤字の3つです。

(11)

- 11 –

レイアウトマネージャを使ったサンプルプログラム

●フローレイアウト(Flow1.java)

『フローレイアウト』は、可能な限り横1列にGUIコンポーネントを配置するレイアウト方法です。G

UIコンポーネントは、追加された順に左から右へと並びます。1行に入りきらない場合は、次の行に折

り返して表示します。余白があるときは中央揃えになります。

// フローレイアウトのサンプルプログラム

import javax.swing.*;

import java.awt.*;

class Flow1 {

public static void main(String args[]) {

JFrame f = new JFrame("FlowLayout1");

f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

Container c = f.getContentPane();

・・・ ①

// レイアウトマネージャのインスタンスを作る

FlowLayout fl = new FlowLayout();

・・・ ②

// レイアウトを設定

c.setLayout(fl);

・・・ ③

// ボタンを 6 つ作ってコンテンツ区画に追加する

c.add(new JButton("1"));

c.add(new JButton("2"));

c.add(new JButton("3"));

c.add(new JButton("4"));

c.add(new JButton("5"));

c.add(new JButton("6"));

f.pack();

f.setVisible(true);

}

}

① コンテンツペインは、Container クラス型(コンテナ)のオブジェクトです。getContentPane で得ること

ができます。

② フローレイアウトマネージャは、

FlowLayout

クラスで作ります。

③ レイアウトは、レイアウトマネージャを作って、setLayout メソッドの引数にすることで設定します。

(12)

『フローレイアウト』では、ウィンドウの幅が広がったときに、GUIコンポーネントを左詰め、中央、

右詰めなどに整列するように設定できます。コンストラクタ FlowLayout の引数には、FlowLayout クラス

が持つフィールド名を指定します(下表)

。省略時は、中央揃え(CENTER)です。

フィールド名

整 列 方 法

LEFT

各行の GUI コンポーネントを左揃えにする

CENTER

各行の GUI コンポーネントを中央揃えにする

RIGHT

各行の GUI コンポーネントを右揃えにする

LEADING

各行の GUI コンポーネントをコンテナの方向のリーディングエッジ(例えば、左

から右方向の場合の左端)に揃える

TRAILING 各行の GUI コンポーネントをコンテナの方向のトレイリングエッジ(例えば、

左から右方向の場合の右端)に揃える

※サンプルのコンテナの方向は、左から右方向なので LEFT と LEADING は同じ挙動になります

②の、FlowLayout fl = new FlowLayout(); は、以下のように記述することができます。

FlowLayout fl = new FlowLayout(FlowLayout.RIGHT, 10, 15);

ここで、「クラス名.フィールド名」として使用できるフィールドを『

クラス変数

』と呼び、

『インスタン

ス変数』と異なり、インスタンスを生成しなくても使用できるフィールドです。第2引数と第3引数には、

GUIコンポーネント同士の水平間隔、垂直間隔が指定できます(単位ピクセル)。

また、20行目から22行目の記述は、第2引数で挿入位置(先頭0)を指定することができます。

c.add(new JButton("4"),0);

c.add(new JButton("5"),2);

c.add(new JButton("6"),4);

(13)

- 13 –

●グリッドレイアウト(Grid1.java)

『グリッドレイアウト』

(grid:格子)は、GUIコンポーネントを縦横の格子状に配置するレイアウト方

法です。GUIコンポーネントは、追加された順に左上→右上→次行の左端→右端右へと並びます。枠の

大きさは、GUIコンポーネントの中の最大のものに合わせられます。ウィンドウサイズを変えると、そ

れに合わせて枠の大きさも変化します。

// グリッドレイアウトのサンプルプログラム 1

import javax.swing.*;

import java.awt.*;

class Grid1 {

public static void main(String args[]) {

JFrame f = new JFrame("GridLayout1");

f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

Container c = f.getContentPane();

// レイアウトマネージャのインスタンスを作る

GridLayout gl = new GridLayout(2, 3);

・・・ ①

c.setLayout(gl);

c.add(new JButton("1"));

c.add(new JButton("2"));

c.add(new JButton("3"));

c.add(new JButton("4"));

c.add(new JButton("5"));

c.add(new JButton("6"));

f.pack();

f.setVisible(true);

}

}

① グリッドレイアウトマネージャは、

GridLayout

クラスで作ります。引数は、行数、列数です。

この、GridLayout gl = new GridLayout(2, 3); は、以下のように記述することができます。

GridLayout gl = new GridLayout(0, 4, 10, 20);

第3引数、第4引数は、GUIコンポーネント同士の水平間隔、垂直間隔が指定できます(単位ピクセル

でデフォルトは0)。行数または列数のどちらかを0に指定すると、0でない方の値だけが有効になりま

す。この場合、行数が0なので、行数にかかわらず4列で配置する指定になります。

(14)

●ボーダーレイアウト(Border1.java)

『ボーダーレイアウト』

(border:境界)は、GUIコンポーネントを東・西・南・北・中央の5箇所に配

置するレイアウト方法です。JFrame クラスのコンテンツ区画は、デフォルトで『ボーダーレイアウト』

になっています。

// ボーダーレイアウトのサンプルプログラム 1

import javax.swing.*;

import java.awt.*;

class Border1 {

public static void main(String args[]) {

JFrame f = new JFrame("BorderLayout1");

f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

Container c = f.getContentPane();

// ボーダーレイアウトマネージャのインスタンスを作る

BorderLayout bl = new BorderLayout();

・・・ ①

c.setLayout(bl);

// 第2引数で配置場所を指定

c.add(new JButton("NORTH"), BorderLayout.NORTH);

・・・ ②

c.add(new JButton("EAST"), BorderLayout.EAST);

c.add(new JButton("CENTER"),BorderLayout.CENTER);

c.add(new JButton("WEST"), BorderLayout.WEST);

c.add(new JButton("SOUTH"), BorderLayout.SOUTH);

f.pack();

f.setVisible(true);

}

}

① ボーダーレイアウトマネージャは、

BorderLayout

クラスで作ります。第1引数と第2引数には、GUI

コンポーネント同士の水平間隔、垂直間隔が指定できます(単位ピクセルでデフォルトは0)

② 配置場所は、add メソッドの第2引数で指定します。BorderLayout クラスの『クラス変数』を使います。

デフォルトでは CENTER になっているので、指定しないとすべて重なり、最後のGUIコンポーネントだ

けしか見えなくなります。NORTH と SOUTH の領域は、横一杯に広がります。WEST と EAST は、文字列の長

さで横幅が決まります。CENTER の領域は、残った大きさ一杯に広がります。

(15)

- 15 –

●レイアウトマネージャを組み合わせて使う(PanelSample.java)

複数のレイアウトマネージャを組み合わせて使うためには、

『パネル』が必要です。パネルは、複数

のGUIコンポーネントを1つにまとめて扱うためのGUIコンポーネントです。フレームのコン

テンツ区画や、パネルのようにGUIコンポーネントを入れる(載せる)ことのできるオブジェク

トは、

コンテナ

』と呼ばれます。

//複数のレイアウトマネージャを組み合わせて使うサンプルプログラム

import javax.swing.*;

import java.awt.*;

class PanelSample {

public static void main(String args[]) {

JFrame f = new JFrame("PanelSample");

f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

Container fc = f.getContentPane();

// パネルを作る

JPanel p = new JPanel();

・・・ ①

// パネルはグリッドレイアウト(3×3)

GridLayout gl = new GridLayout(3, 3);

p.setLayout(gl);

・・・ ②

// パネルにラベルとボタンを載せる

p.add(new JLabel("")); // ダミー

p.add(new JButton("↑"));

p.add(new JLabel("")); // ダミー

p.add(new JButton("←"));

p.add(new JLabel("")); // ダミー

p.add(new JButton("→"));

p.add(new JLabel("")); // ダミー

p.add(new JButton("↓"));

p.add(new JLabel("")); // ダミー

// フレームのコンテンツ区画(北)にボタンを載せる

fc.add(new JButton("CANCEL"), BorderLayout.NORTH);

・・・ ③

// フレームのコンテンツ区画(中央)にパネルを載せる

fc.add(p, BorderLayout.CENTER);

// フレームのコンテンツ区画(南)にボタンを載せる

fc.add(new JButton("O K"), BorderLayout.SOUTH);

f.pack();

f.setVisible(true);

}

}

① パネルは、JPanel クラスで作ります。

② パネル内をグリッドレイアウト(3×3)にします。

③ フレームのコンテンツ区画は、デフォルトの

ボーダー

レイアウトになります。

参照

関連したドキュメント

暑熱環境を的確に評価することは、発熱のある屋内の作業環境はいう

自分は超能力を持っていて他人の行動を左右で きると信じている。そして、例えば、たまたま

最愛の隣人・中国と、相互理解を深める友愛のこころ

2)海を取り巻く国際社会の動向

自発的な文の生成の場合には、何らかの方法で numeration formation が 行われて、Lexicon の中の語彙から numeration

町の中心にある「田中 さん家」は、自分の家 のように、料理をした り、畑を作ったり、時 にはのんびり寝てみた

参加者は自分が HLAB で感じたことをアラムナイに ぶつけたり、アラムナイは自分の体験を参加者に語っ たりと、両者にとって自分の

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から