问答题

本程序的功能是计算圆和三角形的面积,通过“选择”菜单可以分别进行圆和三角形面积的计算,单击“圆面积计算”菜单项,窗口中就会显示两个文本框和一个“确定”按钮,在第一个文本框中输入圆的半径,单击“确定”按钮后就可以在第二个文本框中显示圆的面积。单击“三角形面积计算”菜单项,窗口中就会显示四个文本框和一个“确定”按钮,在前三个文本框中分别输入三角形三个边的长度,单击“确定”按钮后,如果三个边的长度不能组成三角形,则在结果文本框中给出提示信息,否则显示三角形的面积。如果输入的值不是数值,则给出提示信息,如图所示。


import java.awt.*;
import java.awt.event.*;
class circle extends Panel imDlements ActionListener
{
double r, area;
TextField radius=null,result=null;
Button b=null;
void circle()
{
radius=new TextField(10);
result=new TextField(10);
b=new Button("确定");
add (new Label ("输入半径"));
add (radius);
add(new Label("面积是:"));
add(result);
add(b);
b.addActionListener(this);
result.setEnabled(false);
}
public void actionPerformed(ActionEvent e)
{
try
{ r=Double.parseDouble(radius.getText());
area=Math. PI*r*r;
result.setText(""+area);
catch(Exception ee)
{ radius.setText("请输入数学字符");
}
}
}
class triangle extends Panel implements ActionListener
{ double a=O,b=O,c=O,area;
TextField border a=new TextField(6),
border b=new TextField(6),
border c=new TextField(6),
result=new TextField(24);
Button button=new Button("确定");
triangle(){
add (new Label ("输入三边的长度: "));
add(border_a); add(border_b); add(border_c);
add (new Label("面积是:"));
add (result);
add (button);
button.addActionListener(this);
result.setEnabled(false);
}
public void actionPerformed(ActionEvent e)
{ try{ a=Double.parseDouble(border a.getText());
b=Double.parseDouble(border_b.getText());
c=Double.parseDouble(border_c.getText());
if(a+b>c&&a+c>b&&c+b>a)
{ double p=(a+b+c)/2;
area=Math, sqrt (p* (p-a) * (p-b) * (p-c));
result, setText (" "+area);
}
else
{ result, setText ("您输入的数字不能形成三角形");
}
}
catch(Exception ee)
{ result, setText ("请输入数字字符");
}
}
}
class Win extends JFrame implements ActionListener
{ MenuBar bar=null;
Menu menu=null;
MenuItem item1, item2;
circle circle;
triangle trangle;
Win ( )
{ bar=new MenuBar(); menu=new Menu("选择");
setSize(300,200);
item1=new MenuItem ("圆面积计算");
item2=new MenuItem("三角形面积计算");
menu.add(item1);
menu.add(item2);
bar.add(menu);
setMenuBar(bar);
circle=new circle();
trangle=new triangle();
item1.addActionListener(this);
item2.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==item1)
{ removeAll();
add(circle,"Center");
validate();
}
else if(e.getSource()==item2)
{ removeAll();
add(trangle,"Center";
validate();
}
}
}
public class exam_1
{ public static void main(String args[])
{ Win win=new Win();
win.setTitle("exam_1");
win.setBounds(100,100,700,300);
win.setVisible(true);
win.addWindowListener( new WindowListener()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
}
}

【参考答案】

第1处:circle()
第2处:extends Frame
第3处:new WindowAdapter()