
一个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();
}
} 展开
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();
}
} 展开
3个回答
展开全部
caculateBt.addActionListener(new CircleAreaCaculate());这里有问题,本身这句就在它的构造方法里面,你又不停的new它自己,造成内存溢出了
展开全部
你好,修改几句代码就可以了~
//定义下文本框的宽度
JTextField radioTf = new JTextField("",5);
JTextField areaTf = new JTextField("",8);
//为caculateBt添加合适的事件监听器
caculateBt.addActionListener(this);
这样就可以了~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
caculateBt.addActionListener(new CircleAreaCaculate());
改为caculateBt.addActionListener(this);
改为caculateBt.addActionListener(this);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询