ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

NetBeansでAppletを作って、それを埋め込んだhtmlを生成したい

2010年11月23日 18時54分09秒 | ソフト開発日記
NetBeansでAppletを作りたくなったので、作り方メモ。
(NetBeans6.9.1)

まず、プロジェクトの作成。
[新規プロジェクト] → [Java] → [Javaアプリケーション]
を選択。このとき、主クラスを作成のチェックは外します。

できたプロジェクトをプロジェクトビューで右クリックし、
[新規] → [その他] → [Swing GUI フォーム] → [JApplet フォーム]
と進み、適当なクラス名をパッケージ名を入力して完了。

あとは通常のJFrameフォームやJPanelフォームと同様、
ソースとデザインをタブで切り替えれるので、GUIをすいすい作成。
一応GraphicsクラスとpaintComponentを使った描画がちゃんとできるかを確認するため、。
[デザイン]タブのほうでパネルを乗っけてPanelDrawという名前をつけ、
[ソース]タブで次のようなソースを書きました(赤文字の部分だけ記述、他は自動生成)。

===========================================================================================

public class app extends javax.swing.JApplet {

/** Initializes the applet NewJApplet */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
PanelDraw p = new PanelDraw();
panelDraw.setLayout(new BorderLayout());
panelDraw.add(p);

}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}

class PanelDraw extends javax.swing.JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.fillOval(0, 0, 70, 70);
g.setColor(Color.blue);
g.fillRect(10, 10, 50, 50);
}
}


/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
/* Generated Codeを省略 */
// Variables declaration - do not modify
private javax.swing.JPanel panelDraw;
// End of variables declaration
}

===========================================================================================

Appletでは主クラスという概念は(多分)無いため、
実行の際は [Ctrl] + [F6] か、Javaファイルを右クリックして [ファイルを実行] を選択します。
結果、無事アプレットビューアが出てきてきちんと描画されました。

そしてプロジェクトフォルダを確認すると、
[build]フォルダの中に、Appletを表示するhtmlが生成されていました。
これでもう大丈夫と思ったら、何故かソースファイルを変更しても
htmlで呼び出されるJavaクラスファイルに変更が影響されませんでした。
全然意味がわからず、一度[build]フォルダを削除したり
プロジェクト自体を削除したりしましたが、
Javaクラス名が同じだと初めに実行したソースのhtmlしか生成されない。
何言ってるかわから(ry

そして何時間かさんざん色々試した挙句、解決しませんでした。
久々にどうでもよさそうなところでかなりの時間が費やされました。

根本的には解決できていませんが、とりあえずの解決策として、
アプレットビューアでは問題なく表示されるため
生成したhtmlを使用したい時のみ、そのJavaクラス名を変更して
その名前に依存したhtmlを生成していきます。