代码如下:
import java.awt.*;
import java.awt.event.*;
class yuan extends Panel implements ActionListener
{
double r=0,area;
TextField banjin,result_text;
Button b=null;
yuan()
{
banjin=new TextField(10);
result_text=new TextField(10);
b=new Button("确定");
add(new Label("请输入半径"));
add(banjin);add(result_text);
add(b);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{try
{
r=Double.parseDouble(banjin.getText());
area=Math.PI*r*r;
result_text.setText(""+area);
}
catch(Exception ee)
{
banjin.setText("请输入数字字符");
}
}
class sanjiaoxing extends Panel implements ActionListener //负责计算三角形的面积
{
double a=0,b=0,c=0;
TextField bian1=new TextField(6);
TextField bian2=new TextField(6);
TextField bian3=new TextField(6);
TextField result_text_s =new TextField(12);
Button button=new Button("确定");
sanjiaoxing()
{
add(new Label("请输入三边的长度"));
add(bian1);add(bian2);add(bian3);
add(button);button.addActionListener(this);
add(new Label("三角形的面积是:"));
add(result_text_s);
}
public void actionPerformed(ActionEvent e)
{
try
{
a=Double.parseDouble(bian1.getText());
b=Double.parseDouble(bian2.getText());
c=Double.parseDouble(bian3.getText());
if(a+b>c&&a+c>b&&b+c>a)
{
double p=(a+b+c)/2;
area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
result_text_s.setText(""+area);
}
else
{
result_text_s.setText("你输科的三边不能形成三角形");
}
}
catch(Exception ee)
{
result_text_s.setText("请输入数字字符");
}
}
}
class Win extends Frame implements ActionListener
{
MenuBar bar=null;
Menu menu=null;
MenuItem item1,item2;
yuan circle;
sanjiaoxing trangle;
Win()
{
bar=new MenuBar();
menu=new Menu("选择");
item1=new MenuItem("圆计算面积");
item2=new MenuItem("三角形计算面积");
menu.add(item1);menu.add(item2);
bar.add(menu);
circle=new yuan();
trangle=new sanjiaoxing();
item1.addActionListener(this);
item2.addActionListener(this);
setVisible(true);setBounds(100,120,100,90);
}
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 area_1
{
public void main(String args[])
{
Win win=new Win();
win.setBounds(100,100,200,100);
win.setVisible(true);
win.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
}
6 个解决方案
#1
因为你在这个类文件中定义了几个内部类,每个内部类都要生成一个class文件的。
这个没什么大惊小怪的。
这个没什么大惊小怪的。
#2
lz不怕
it is正常的
it is正常的
#3
那我怎么执行这个程序呢?
#4
1. 你在一个文件里定义了几个类的时候,会出现这种情况,比如
public class A {}
class B {}
class C {}
这样每个 class 会是一个 .class 文件
2. 你定义了内部类的时候会出现这种情况,如
public class A {
class B {
}
}
这会产生两个 class 文件,一个 A.class,一个 A$B.class
3. 使用了匿名类的时候出出现这种情况,如
public class A {
void xxx() {
button.addActionLisener(new ActionListener() {...});
}
}
这也会产生多个 class,一个 A.class,一个 A$1.class
}
public class A {}
class B {}
class C {}
这样每个 class 会是一个 .class 文件
2. 你定义了内部类的时候会出现这种情况,如
public class A {
class B {
}
}
这会产生两个 class 文件,一个 A.class,一个 A$B.class
3. 使用了匿名类的时候出出现这种情况,如
public class A {
void xxx() {
button.addActionLisener(new ActionListener() {...});
}
}
这也会产生多个 class,一个 A.class,一个 A$1.class
}
#5
只要运行java area_1 就可以输出结果了,你真得应该仔细阅读一下程序结构...
#6
谢谢楼上各位!
#1
因为你在这个类文件中定义了几个内部类,每个内部类都要生成一个class文件的。
这个没什么大惊小怪的。
这个没什么大惊小怪的。
#2
lz不怕
it is正常的
it is正常的
#3
那我怎么执行这个程序呢?
#4
1. 你在一个文件里定义了几个类的时候,会出现这种情况,比如
public class A {}
class B {}
class C {}
这样每个 class 会是一个 .class 文件
2. 你定义了内部类的时候会出现这种情况,如
public class A {
class B {
}
}
这会产生两个 class 文件,一个 A.class,一个 A$B.class
3. 使用了匿名类的时候出出现这种情况,如
public class A {
void xxx() {
button.addActionLisener(new ActionListener() {...});
}
}
这也会产生多个 class,一个 A.class,一个 A$1.class
}
public class A {}
class B {}
class C {}
这样每个 class 会是一个 .class 文件
2. 你定义了内部类的时候会出现这种情况,如
public class A {
class B {
}
}
这会产生两个 class 文件,一个 A.class,一个 A$B.class
3. 使用了匿名类的时候出出现这种情况,如
public class A {
void xxx() {
button.addActionLisener(new ActionListener() {...});
}
}
这也会产生多个 class,一个 A.class,一个 A$1.class
}
#5
只要运行java area_1 就可以输出结果了,你真得应该仔细阅读一下程序结构...
#6
谢谢楼上各位!