class AddMath extends Frame
{
String str1,str2;
double num1,num2,num3;
public AddMath()
{
//按钮jb1按下从两个文本框里j1,j2得到字符串转换为数字相加
jb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
str1 = j1.getText();
num1 = Double.parseDouble(str1);
str2 = j2.getText();
num2 = Double.parseDouble(str2);
num3 = num1 + num2;
String d = Double.toString(num3);
j3.setText(d);
}
});
}
jcreator编译不通过:
如下:
--
------------------Configuration: <Default>--------------------
F:\jbulid\TestMath\src\AddMath.java:44: local variable j1 is accessed from within inner class; needs to be declared final
str1 = j1.getText();
^
F:\jbulid\TestMath\src\AddMath.java:46: local variable j2 is accessed from within inner class; needs to be declared final
str2 = j2.getText();
^
F:\jbulid\TestMath\src\AddMath.java:50: local variable j3 is accessed from within inner class; needs to be declared final
j3.setText(d);
^
3 errorsProcess completed.
new Double("str1").doubleValue()试试看吧
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
class AddMath extends JFrame
{
String str1,str2;
double num1,num2,num3;
private JTextField j1;
private JTextField j2;
private JTextField j3;
private JButton jb1;
public AddMath()
{
j1=new JTextField("firstnum");
j2=new JTextField("second num");
j3=new JTextField("sum");
jb1=new JButton("ok");
JPanel panel=new JPanel();;
panel.add(j1);
panel.add(j2);
panel.add(j3);
panel.add(jb1);
this.add(panel);
jb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
str1 = j1.getText();
num1 = Double.parseDouble(str1);
str2 = j2.getText();
num2 = Double.parseDouble(str2);
num3 = num1 + num2;
String d = Double.toString(num3);
j3.setText(d);
}
});
}
public static void main(String[] args){
JFrame frame=new AddMath();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
你的程序中的三个文本域在构造器中定义的吗?估计你没有把文本域定义为类变量,如果你不想在类里定义文本域变量,可以用这种形式.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
class AddMath extends JFrame
{
String str1,str2;
double num1,num2,num3;
private JButton jb1;
public AddMath(final JTextField j1,final JTextField j2,final JTextField j3 )
{
jb1=new JButton("ok");
JPanel panel=new JPanel();;
panel.add(j1);
panel.add(j2);
panel.add(j3);
panel.add(jb1);
this.add(panel);
jb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
str1 = j1.getText();
num1 = Double.parseDouble(str1);
str2 = j2.getText();
num2 = Double.parseDouble(str2);
num3 = num1 + num2;
String d = Double.toString(num3);
j3.setText(d);
}
});
}
public static void main(String[] args){
JFrame frame=new AddMath(new JTextField("first num"),new JTextField ("second num "),new JTextField("sum "));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
设为: final就可以了!