import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.security.*;
public class num3 extends Applet implements ActionListener{
Double a,b,c,d,re,im,x1,x2;
Label label;
TextField t1,t2,t3;
Button b1,b2;
public void init(){
label=new Label("Enter three numbers:");
t1=new TextField(20);t2=new TextField(20);t3=new TextField(20);
t2.setEditable(false);t3.setEditable(false);
b1=new Button("OK");b2=new Button("CLEAR");
add(label);add(t1);add(t2);add(t3);add(b1);add(b2);
b1.addActionListener(this);b2.addActionListener(this);
}
public void paint(Graphics g){
try{
String s=t1.getText();
String s1[]=s.split("");
a=Double.parseDouble(s1[0]);b=Double.parseDouble(s1[1]);c=Double.parseDouble(s1[2]);
if(a==0&&b==0)t2.setText("Extremely degerate!");
else{
if(a==0&&b!=0)t2.setText("Degenerate:x="+(-c)/b);
else {
d=b*b-4*a*c;
int i=d>0?1:d==0?2:3;
switch(i){
case 1:x1=(-b+Math.sqrt(d))/(2*a);
x2=(-b-Math.sqrt(d))/(2*a);
t2.setText("root1="+x1);t3.setText("root2="+x2);
break;
case 2:x1=x2=(-b)/(2*a);
t2.setText("root1="+x1);t3.setText("root2="+x2);
break;
case 3:re=(-b)/(2*a);
im=Math.sqrt(-d)/(2*a);
t2.setText("root1="+re);t3.setText("root2="+im);
break;
}
}
}
} catch(NumberFormatException e){}
catch(AccessControlException e1){
g.drawString("Exit loop!", 150, 100);
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1){repaint();setBackground(Color.red);}
if(e.getSource()==b2){
t1.setText(" ");t2.setText(" ");t3.setText(" ");
repaint();
setBackground(Color.white);
} }
}
OK按钮没有用,本来应该出来结果的,可是只是改变了背景色,没有计算结果
请大家帮忙运行一下
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.security.*;
public class num3 extends Applet implements ActionListener{
Double a,b,c,d,re,im,x1,x2;
Label label;
TextField t1,t2,t3;
Button b1,b2;
public void init(){
label=new Label("Enter three numbers:");
t1=new TextField(20);t2=new TextField(20);t3=new TextField(20);
t2.setEditable(false);t3.setEditable(false);
b1=new Button("OK");b2=new Button("CLEAR");
add(label);add(t1);add(t2);add(t3);add(b1);add(b2);
b1.addActionListener(this);b2.addActionListener(this);
}
public void paint(Graphics g){
try{
String s=t1.getText();
String s1[]=s.split("");
a=Double.parseDouble(s1[0]);b=Double.parseDouble(s1[1]);c=Double.parseDouble(s1[2]);
if(a==0&&b==0)t2.setText("Extremely degerate!");
else{
if(a==0&&b!=0)t2.setText("Degenerate:x="+(-c)/b);
else {
d=b*b-4*a*c;
int i=d>0?1:d==0?2:3;
switch(i){
case 1:x1=(-b+Math.sqrt(d))/(2*a);
x2=(-b-Math.sqrt(d))/(2*a);
t2.setText("root1="+x1);t3.setText("root2="+x2);
break;
case 2:x1=x2=(-b)/(2*a);
t2.setText("root1="+x1);t3.setText("root2="+x2);
break;
case 3:re=(-b)/(2*a);
im=Math.sqrt(-d)/(2*a);
t2.setText("root1="+re);t3.setText("root2="+im);
break;
}
}
}
} catch(NumberFormatException e){}
catch(AccessControlException e1){
g.drawString("Exit loop!", 150, 100);
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1){repaint();setBackground(Color.red);}
if(e.getSource()==b2){
t1.setText(" ");t2.setText(" ");t3.setText(" ");
repaint();
setBackground(Color.white);
} }
}
OK按钮没有用,本来应该出来结果的,可是只是改变了背景色,没有计算结果
请大家帮忙运行一下
你为什么要把计算的东西写在paint()里? 通过repaint()来调用