import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class testView extends JFrame
{
private Container content;
private JTextField myJTextField1;
private JTextField myJTextField2;
private JTextField myJTextField3;
private JLabel myJLabel1;
private JLabel myJLabel2;
private JLabel myJLabel3;
private JButton myJButton1;
private JButton myJButton2;

public testView()
{//构造器
createUserInterface();
}public void createUserInterface()
{
content=getContentPane();
content.setLayout(null);
setTitle("解一元二次方程");
setVisible(true);
setSize(300,300);
//添加部件
myJLabel1=new JLabel();
myJLabel1.setText("参数a");
myJLabel1.setBounds(45,45,50,20);
content.add(myJLabel1);

myJTextField1=new JTextField();
myJTextField1.setBounds(105,45,50,20);
myJTextField1.setHorizontalAlignment(JTextField.RIGHT);
content.add(myJTextField1);

myJLabel2=new JLabel();
myJLabel2.setText("参数b");
myJLabel2.setBounds(45,80,50,20);
content.add(myJLabel2);

myJTextField2=new JTextField();
myJTextField2.setBounds(105,80,50,20);
myJTextField2.setHorizontalAlignment(JTextField.RIGHT);
content.add(myJTextField2);

myJLabel3=new JLabel();
myJLabel3.setText("参数c");
myJLabel3.setBounds(45,115,50,20);
content.add(myJLabel3);

myJTextField3=new JTextField();
myJTextField3.setBounds(105,115,50,20);
myJTextField3.setHorizontalAlignment(JTextField.RIGHT);
content.add(myJTextField3);

final double a=Integer.parseInt(myJTextField1.getText());
final double b=Integer.parseInt(myJTextField2.getText());
final double c=Integer.parseInt(myJTextField3.getText());

myJButton1=new JButton();
myJButton1.setText("清除");
myJButton1.setBounds(45,150,50,20);
content.add(myJButton1);
myJButton1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
myJTextField1.setText("");
myJTextField2.setText("");
myJTextField3.setText("");
}
});
myJButton2=new JButton();
myJButton2.setText("求解");
myJButton2.setBounds(105,150,50,20);
content.add(myJButton2);
myJButton2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(0==a)
{
JOptionPane.showMessageDialog(null,"a不能为零!","error",JOptionPane.ERROR_MESSAGE);
}
else{
double x=b*b-4*a*c;
if(x<0)
{
JOptionPane.showMessageDialog(null, "该方程无解","error",JOptionPane.ERROR_MESSAGE);
}
else
{
JOptionPane.showConfirmDialog(null,"该方程的解为"+(-(b+Math.sqrt(x))/(2*a))+","+(-(b-Math.sqrt(x))/(2*a)));
}
}
}

});

}public static void main(String[] args)
{
testView test=new testView();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

解决方案 »

  1.   

    因为你的a,b,c被定义成了最终类型,但是给a,b,c赋值是从文本框中获取的值,这和final是不匹配的,所以不能被识别,你可以将给a,b,c的赋值定义在监听器内部,就不用定义为final类型,就可以引用了myJButton2.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
    double a=Integer.parseInt(myJTextField1.getText());
    double b=Integer.parseInt(myJTextField2.getText());
    double c=Integer.parseInt(myJTextField3.getText());
    // TODO Auto-generated method stub
    if(0==a){
    JOptionPane.showMessageDialog(null,"a不能为零!","error",JOptionPane.ERROR_MESSAGE);
    } else{
    double x=b*b-4*a*c;
    if(x<0){
    JOptionPane.showMessageDialog(null, "该方程无解","error",JOptionPane.ERROR_MESSAGE);
    } else{
    JOptionPane.showConfirmDialog(null,"该方程的解为"+(-(b+Math.sqrt(x))/(2*a))+","+(-(b-Math.sqrt(x))/(2*a)));
    }
    }
    }

    });