public void windowClosing(WindowEvent e) {
	System.exit(0);
}
のように、メソッドwindowClosing()を変更すれば良い。
その他のイベントをとらえて表示するには、
public void windowActivated(WindowEvent e) {
	System.err.println(e);
}
のように変更する。これを
windowClosed(),
windowDeactivated(),
windowDeiconified(),
windowIconified(),
windowOpened()
についても行なえば良い。
次にラベルをいくつも並べるというのは、以下のプログラムのように main()メソッドを変更する。
public static void main (String args[]) {
	TestWin f = new TestWin("Test Window");
	GridLayout g = new GridLayout(2, 2);
	f.setLayout(g);
	f.add(new Label("Third"));
	f.add(new Label("Forth"));
	f.add(new Label("Fifth"));
	f.add(new Label("Sixth"));
	f.setLocation(100, 200);
	f.pack();
	f.show();
}
この例ではGridLayoutのインスタンスを縦2、横2の大きさを指定して生成し、
setLayout()している。それからadd() でラベルを追加して
いっている。
ボタンを単に追加してみる練習については省略。「終了」ボタンを追加する分は、 まず文字列「Quit」であれば終了するようにメソッド actionPerformed() を次のように変更する。
public void actionPerformed (ActionEvent e) {
	String s = e.getActionCommand();
	if (s.equals("Quit")) {
		System.exit(0);
	} else {
		System.err.println(s);
	}
}
次にmain()メソッドで終了用のボタンを追加するように、例えば次のように
変更する。
public static void main (String args[]) {
	TestWin f = new TestWin("Test Window");
	GridLayout g = new GridLayout(3, 1);
	f.setLayout(g);
	f.add(new Label("This is Label."));
	Button b = new Button("Click Me");
	b.addActionListener(f);
	f.add(b);
	b = new Button("Quit");
	b.addActionListener(f);
	f.add(b);
	f.setLocation(100, 200);
	f.pack();
	f.show();
}
次に TextField を組み込む練習&宿題については次のようになる。
public static void main (String args[]) {
	TestWin f = new TestWin("Test Window");
	GridLayout g = new GridLayout(2, 1);
	f.setLayout(g);
	f.btn1 = new Button("q");
	f.btn1.addActionListener(f);
	f.add(f.btn1);
	f.txt1 = new TextField(20);
	f.txt1.addActionListener(f);
	f.add(f.txt1);
	f.setLocation(100, 200);
	f.pack();
	f.show();
}
    
public void actionPerformed (ActionEvent e) {
	String s = e.getActionCommand();
	if (s.equals("q")) {
		System.exit(0);
	}
	if (e.getSource() == txt1) {
	    try {
		calc.push(new Float(txt1.getText()));
	    } catch (NumberFormatException e) {
		System.err.println(e);
	    }
	}
}
    avalonではユーザが自分の作成したサーブレットを簡単に実行できる 仕組みを用意している。それを使用する場合は、以下のページを参照して前もっ て(少なくとも前日に)準備すること。
また、サーブレット関係ドキュメントは[こちら]に 準備しているので、詳細はそちらを参照すること。なお、今回用いるサーブレッ トの環境は第2.0版のものであり、かなり古い規格ではあるが、一通りの機能を 使ってみることが可能である。
     1|	import java.io.*;
     2|	
     3|	import javax.servlet.*;
     4|	import javax.servlet.http.*;
     5|	
     6|	/**
     7|	 * This is a simple example of an HTTP Servlet.  It responds to the GET
     8|	 * and HEAD methods of the HTTP protocol.
     9|	 */
    10|	public class Hello extends HttpServlet
    11|	{ 
    12|	    /**
    13|	     * Handle the GET and HEAD methods by building a simple web page.
    14|	     * HEAD is just like GET, except that the server returns only the
    15|	     * headers (including content length) not the body we write.
    16|	     */
    17|	    public void doGet (HttpServletRequest request,
    18|	                       HttpServletResponse response) 
    19|	        throws ServletException, IOException
    20|	        {
    21|	            PrintWriter out;
    22|	            String title = "Example Apache JServ Servlet";
    23|	
    24|	            // set content type and other response header fields first
    25|	            response.setContentType("text/html");
    26|	
    27|	            // then write the data of the response
    28|	            out = response.getWriter();
    29|	            
    30|	            out.println("<HTML><HEAD><TITLE>");
    31|	            out.println(title);
    32|	            out.println("</TITLE></HEAD><BODY bgcolor=\"#FFFFFF\">");
    33|	            out.println("<H1>" + title + "</H1>");
    34|	            out.println("<H2>Congratulations, ApacheJServ 1.1.2 is working!<br>");
    35|	            out.println("</BODY></HTML>");
    36|	            out.close();
    37|	        }
    38|	}
doGet()メソッドは HTTP の GET メソッドでこのサーブレットが指定
された際に呼び出される。HTTP のリクエストは第1引数に、レスポンス生成用の
オブジェクトは第2引数に渡される。
サーブレットはコンパイルしたあとあるタイミングでサーブレットエンジンに読 み込まれた際にインスタンスが生成され、ブラウザからのリクエストに応じてメ ソッドが呼び出される。
日本語を表示する際は、25行目を以下のように変更すること(もし、古いブラウ ザでうまく表示できない場合は、「UTF-8」の部分を 「EUC-JP」もしくは「ISO-2022-JP」にすれば良い)。
response.setContentType("text/html; charset=UTF-8");