一个java程序,实在找不到哪里问题,请求帮助

程序如下importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;//创建一个实现了ActionListen... 程序如下

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//创建一个实现了ActionListener接口的公共类CircleAreaCaculate
public class CircleAreaCaculate implements ActionListener{
JFrame frame = new JFrame ("Circle Area Caculate");
JTextField radioTf = new JTextField();
JTextField areaTf = new JTextField();
JButton caculateBt=new JButton("Caculate");

CircleAreaCaculate() {
//得到frame的内容窗格
Container contentPane=frame.getContentPane();
//将内容窗格的布局管理器设置为BorderLayout
contentPane.setLayout(new BorderLayout(5,10));

//创建一个两行两列的网格状布局的面板p
JPanel p = new JPanel();
p.add(new JLabel("半径:"));
p.add(radioTf);
p.add(new JLabel("面积:"));
p.add(areaTf);

//将areaTf设置为不可编辑
areaTf.setEditable(false);

contentPane.add(p,BorderLayout.CENTER);
contentPane.add(caculateBt,BorderLayout.SOUTH);

//为caculateBt添加合适的事件监听器
caculateBt.addActionListener(new CircleAreaCaculate());

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//将frame设置为300像素宽,150像素高
frame.setSize(300,150);
//显示frame
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
try{
//读取用户输入的半径值
double radio=Double.parseDouble(radioTf.getText());
if(radio<0){
areaTf.setText("半径不能小于0!");
return;
}
//根据半径计算圆的面积
double area = radio * radio * Math.PI;
//显示面积的值
areaTf.setText(String.valueOf(area));
}catch(ArithmeticException ex ){ //捕捉数字格式异常
areaTf.setText("数据格式错误!");
}
}

public static void main(String args[]) {
new CircleAreaCaculate();
}
}
展开
 我来答
aliens001
2013-06-29 · 超过20用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:43.1万
展开全部
caculateBt.addActionListener(new CircleAreaCaculate());这里有问题,本身这句就在它的构造方法里面,你又不停的new它自己,造成内存溢出了
阿刚炖蛋
2013-06-29 · TA获得超过3005个赞
知道大有可为答主
回答量:1789
采纳率:92%
帮助的人:1036万
展开全部

你好,修改几句代码就可以了~

//定义下文本框的宽度
JTextField radioTf = new JTextField("",5);
JTextField areaTf = new JTextField("",8);

//为caculateBt添加合适的事件监听器
caculateBt.addActionListener(this);

这样就可以了~~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彼岸无渡1234
2013-06-29
知道答主
回答量:18
采纳率:0%
帮助的人:12.6万
展开全部
caculateBt.addActionListener(new CircleAreaCaculate());
改为caculateBt.addActionListener(this);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式