package inner; import java.applet.*; import java.awt.*; import java.awt.event.*; public class InnerClass extends Applet { private TextField tfRadius; private Button btn; private TextField tfArea; //アプレットの初期化 public void init() { //部品の作成 Label label = new Label("半径"); tfRadius = new TextField(); btn = new Button("面積"); tfArea = new TextField(); //部品の配置/大きさの指定 label.setBounds(20,20,40,20); tfRadius.setBounds(70,20,60,20); btn.setBounds(50,50,50,20); tfArea.setBounds(20,80,110,20); //イベントリスナーの登録 EventHandler eh = new EventHandler(); btn.addActionListener(eh); //マウスイベントリスナーの登録 this.addMouseListener (new MouseHandler()); //部品の配置 this.setLayout(null); this.add(label); this.add(tfRadius); this.add(btn); this.add(tfArea); }//init() //マウスイベント処理用の内部クラス class MouseHandler implements MouseListener { @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { setBackground(Color.LIGHT_GRAY); } @Override public void mouseExited(MouseEvent e) { setBackground(Color.PINK); } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } } //ボタンイベント処理用の内部クラス class EventHandler implements ActionListener { public void actionPerformed(ActionEvent e) { //半径の入力欄から面積計算メソッドへの受け渡し String rStr = tfRadius.getText(); tfArea.setText("計算不能"); //I.E., N.C はこの行で止まってしまう //Opera, Netscape6, appletviewer などは O.K. double r = Double.parseDouble(rStr); double d = r*r*Math.PI; String ret = Double.toString(d); tfArea.setText(ret); } } }