JBuider2005の使い方
Java自体の基本構造は簡単です。しかし、JBuilderでは、プログラミングをプロジェクトとして管理する。このプロジェクトのためのファイルを用意する必要がある。

また、JBuilderでのJavaプログラミングは、GUI(グラフィック・ユーザー・インターフェース)を取り入れたアプリケーションの開発が用意であるように、GUI用のフレームを扱う部分(ファイル)とmain関数を含むプログラム本体の部分に分けられているという形をとっており、プログラミングはGUI用のフレームを扱うファイルに対して行われる。

これらの特徴から、JBuilderによるプログラミングは以下のような手順になる。
JBuilderを起動すると、まず下図のような「Tip of the Day」フレームが表示されることがある。

このフレームは、興味が無ければ「Close」ボタンをクリックして閉じる。

新しくプログラムを作成するときは、新しく作成するプログラムのためのプロジェクトを設定するために「File|New Project」を選ぶ(図1)。「File|New Project」をクリックすると、図2のフレームが表示される。

プロジェクト名とフォルダ(Directory)名を設定する。図2ではプロジェクト名Demoが設定されている。このプロジェクト名のフォルダがDirectoryで設定されたフォルダの下に作成され、プロジェクトのファイルが格納される。Directoryの設定は、右側のボタンのクリックで表示されるフレームで設定することが出来る(図3)。

図2でのプロジェクト名とDirectoryの設定後、Nextボタンをクリックする。図4のフレームが表示される。

図4のフレームでは通常は特に設定・変更する項目はないので、Nextボタンをクリックする。図5のフレームが表示される。

図5では、Title欄と@author欄に、タイトル「Demo project」と「Y. Okamoto」を設定している。これらは、例えば、図13、14のファイルのように書き込まれる。書き込んでおきたい項目の設定が終われば、Finishボタンをクリックする。JBuilderが図6の状態で表示される。

このとき、フォルダDemoにはプロジェクトファイルDemo.jpxが作成されている(図7)。

プロジェクトの設定が済めば、次にJavaプログラム作成のための設定を行う。以下では、通常のプログラムであるアプリケーションの開発を例として説明する。

「File|New…」を選ぶ(図8)。図9のObject Galleryが表示される。

GeneralにあるApplicationを選択してOKボタンをクリックする。

クラス名の設定後Nextボタン(図10)をクリックする。フレームのクラス名とフレームのタイトルを設定するフレームが表示される(図11)。

フレーム名とタイトルの設定後、Nextボタンをクリックする。タイトルは、実行時のフレームで表示される。コンフィグレーション名を設定するフレームが表示される(図12)。

特に変更する必要がない場合は、そのままFinishボタンをクリックする。フレームについての記述があるファイルFrameDemo.javaファイルが表示されている画面になる(図13)。

関数mainが記述されているファイルAppDemo.javaは、図14におけるFilesフレーム(ペイン)でAppDemo.javaファイルをダブルクリックすると図14のように表示させることができる。Filesペインにおけるツリーの+ノードをクリックするとその下位のノードが展開され、−ノードをクリックすると展開された下位のツリーが閉じられる。

AppDemo.javaの内容をリスト1に示す。プログラムの実行は関数mainの呼び出しで始まるが、mainにおいてフレームを生成するクラスAppDemoのオブジェクトが生成されている。
リスト1.AppDemo.javaの内容
|
package
demo;
<―― 図2でプロジェクト名として設定した名前 図2のDirectoryのフォルダ名と同じ import
java.awt.Toolkit; import
javax.swing.SwingUtilities; import
javax.swing.UIManager; import
java.awt.Dimension; /** * <p>Title: Demo
project</p> <―― プロジェクト名 * * <p>Description: </p> * * <p>Copyright: Copyright (c)
2005</p> * * <p>Company: </p> * * @author Y. Okamoto <―― 作者名 * @version 1.0 */ public
class AppDemo { boolean packFrame = false; /** * Construct and show
the application. */ public AppDemo() { <―― AppDemoは図10で設定したClass name
FrameDemo frame = new FrameDemo(); <―― フレームの生成 //
Validate frames that have preset sizes //
Pack frames that have useful preferred size info, e.g. from their layout if
(packFrame) {
frame.pack(); }
else {
frame.validate(); } //
Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize(); if
(frameSize.height > screenSize.height) {
frameSize.height = screenSize.height; } if
(frameSize.width > screenSize.width) {
frameSize.width = screenSize.width; }
frame.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true); } /** * Application entry point. * * @param args
String[] */ public static void
main(String[] args) { <―― main関数
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
} catch (Exception exception) {
exception.printStackTrace();
}
new AppDemo(); <―― フレームを生成するAppDemoの生成
}
}); } } |
フレームのデザインを行う。フレームの記述ファイル(ここにおける例ではFrameDemo.java)を選択し、Designタブをクリックすると図15のようにフレームをデザインするペインになる。

表示されているフレームを表すcontentPaneを選択する(図16)。

contentPaneが選択されている状態でlayoutをnullに設定する(図17)。layoutがnullに設定されていると、フレームのデザインがビジュアルにできる。実行時のフレームがこのlayoutがnullの状態でデザインした時と著しく異なるときは、実行時のみlayoutをGridBagLayoutに設定する(図17)。

フレームに必要な部品を貼り付ける。左側のコンポーネントパレットから貼り付ける部品(コンポーネント)をクリックして選び、フレーム上をクリックするとその位置にコンポーネントが貼り付けられる。貼り付けたコンポーネントの位置や大きさはマウスのドラッグで変更できる(図18)。

コンポーネントのプロパティは右側のインスペクタに表示されているプロパティの設定で変更できる。変更したいコンポーネントは、Structureツリー内でのクリックによる選択(図16)、あるいはフレーム上のコンポーネントを直接クリックすることによる選択で指定することができる(図19)。

図19は、ラベルjLabel1で表示されている文字のフォントを設定する場合を表すものである。
貼り付けたボタンをクリックしたときの処理は、フレーム上に貼り付けたボタンをダブルクリックする(図20)ことにより自動的に用意される関数に記述する(図21)。

図21には、このJBuilderによって自動的に挿入された関数(jButton1のクリックで実行される関数としてjButton1_actionPerformedという名前が与えられている)が示されている。

ボタンjButton1のクリックで、ラベルコンポーネントjLabel1に「こんにちは」という文字列を表示するために、
jLabel1.setText(“こんにちは”);
という文を書き込んだ状態が図22である。

必要なコンポーネントをフレームに貼り付け、プログラムで実行することを書き込んだ後、プログラム(プロジェクト)を実行するときは、F9キーをクリックするか、メニュ「Run|Run Project」を選ぶ(図23)。

「Run|Run Project」の選択、あるいはF9キーを押してプロジェクトが実行されると、図24の実行時のフレームが表示される。図11で設定したタイトルがフレームのタイトルとして表示されている。

図24の状態で、ボタンjButton1をクリックすると図25のようにラベルjLabel1に「こんにちは」の文字列が表示される。

プロジェクトは、図25の実行時フレームの右上端のX印ボタンのクリックで終了する。
プロジェクトを実行すると、JavaプログラムのソースファイルAppDemo.java、FrameDemo.javaがJavaのコンパイラによってコンパイル(翻訳)され、JavaVM上で実行される中間コードAppDemo.classなどが作成される。ソースファイルはフォルダsrc\demoに格納されているが、コンパイルされたものはフォルダclasses\demoに格納されている(図26)。

FrameDemo.javaの内容をリスト2に示す。
リスト2.FrameDemo.javaの内容
|
package demo; import
java.awt.BorderLayout; import
java.awt.Dimension; import
javax.swing.JFrame; import
javax.swing.JPanel; import
javax.swing.JButton; import
java.awt.*; import
javax.swing.JLabel; import
java.awt.event.ActionEvent; import
java.awt.event.ActionListener; /** * <p>Title: Demo
project</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c)
2005</p> * * <p>Company: </p> * * @author Y. Okamoto * @version 1.0 */ public class
FrameDemo extends JFrame { <―― 図11で設定したフレームのClass名 JPanel contentPane; JButton jButton1 = new
JButton(); JLabel jLabel1 = new
JLabel(); public FrameDemo() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit(); }
catch (Exception exception) {
exception.printStackTrace(); } } /** * Component
initialization. * * @throws
java.lang.Exception */ private void jbInit()
throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(400, 300));
setTitle("Demo Application");
<―― 図11で設定したTitle
jButton1.setBounds(new Rectangle(160, 188, 71, 23));
jButton1.setText("jButton1");
jButton1.addActionListener(new FrameDemo_jButton1_actionAdapter(this));
jLabel1.setFont(new java.awt.Font("MS
明朝", Font.PLAIN, 24));
jLabel1.setText("jLabel1");
jLabel1.setBounds(new Rectangle(141, 88, 169, 42));
contentPane.add(jButton1, null);
contentPane.add(jLabel1, null); } public void
jButton1_actionPerformed(ActionEvent e) {
jLabel1.setText("こんにちは"); } } class
FrameDemo_jButton1_actionAdapter implements ActionListener { private FrameDemo adaptee;
FrameDemo_jButton1_actionAdapter(FrameDemo adaptee) {
this.adaptee = adaptee; } public void
actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e); } } |
ここで説明したプロジェクトファイルなどをまとめた圧縮ファイルDemo.ZIPはここをクリックするとダウンロードできる。解凍したフォルダDemoにあるプロジェクトファイルDemo.jpxは(ダブルクリックするなどして)JBuilder2005から開くとJBuider2005で実行することができる。