当按钮运行时,Java swing applet会冻结

时间:2017-03-20 03:28:25

标签: java swing applet

这是我使用swing为applet编写的代码。该程序允许用户输入任何额外的项目(外围设备),他们想要使用哪种运输方式,然后允许他们按下按钮来计算他们的总成本,无论是否运送,取决于他们推送的按钮。 问题是,当我运行它时,它会冻结,并且在我单击任一计算按钮后都没有做任何事情。有没有人发现我的代码有什么问题导致了这个? 谢谢。

 package selling;


public class midtermComputers extends javax.swing.JApplet {
public double calculateCost(int quantity){

     double discountedPrice=getDiscountPercentage(quantity);
       double finalCost=0;
     if (isShipping()&(groundRadioButton.isSelected())&quantity<100){
     finalCost= ((discountedPrice*.05)+discountedPrice)*quantity;
     }
        if (isShipping()&(groundRadioButton.isSelected())&quantity>100){
     finalCost=discountedPrice*quantity;
     }     
         if (isShipping()&(airRadioButton.isSelected())){
     finalCost= discountedPrice*.1*quantity;
     }
         if (isShipping()&(fedExRadioButton.isSelected())){
     finalCost= discountedPrice*.2*quantity;
}
         if (!isShipping()){
     finalCost= discountedPrice*quantity;
 }
         return finalCost;
 }

private void calcWithShippingButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                       
    int quantity=1;
    double finalCost=calculateCost(quantity);
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost  + "\n" );
     quantity=100;
 while(quantity<=1000){
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost  + "\n" );
quantity=quantity+100;
    }

    }                                                      

private void calcWithoutShippingButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                          
   int quantity=1;
    double finalCost=calculateCost(quantity);
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost  + "\n" );
 quantity=100;
 while(quantity<=1000){
outputTextPane.setText(outputTextPane.getText() + quantity + "\t" + finalCost  + "\n" );
quantity=quantity+100;
}
}                                                         

public double calculateCost(){
double base=399.00;
double costOneUnit=0.0;
          double speakerPeripheral=0.0;
          double printerPeripheral=0.0;
          double scannerPeripheral=0.0;
          double microphonePeripheral=0.0;
          double projectorPeripheral=0.0;
          double plotterPeripheral=0.0;

while(speakerCheckBox.isSelected()){
   speakerPeripheral=89.00;
}

while(printerCheckBox.isSelected()){
  printerPeripheral=59.00;
}
 while(scannerCheckBox.isSelected()){
  scannerPeripheral=415.00;
 }
 while(microphoneCheckBox.isSelected()){
  microphonePeripheral=39.00;
 }
 while(projectorCheckBox.isSelected()){
  projectorPeripheral=549.00;
 }
 while(plotterCheckBox.isSelected()){
  plotterPeripheral=4883.00;
 }
 return costOneUnit=base+speakerPeripheral+printerPeripheral+scannerPeripheral+microphonePeripheral+projectorPeripheral+plotterPeripheral;

}


public boolean isShipping(){
if(calcWithShippingButton.isSelected()){
    return true;
} else{
    return false;
}
}

public double getDiscountPercentage(int quantity){
    double costOneUnit=calculateCost();
    double discountedPrice=0;

    while (quantity<100){
discountedPrice=costOneUnit;
}
    while (quantity>100&quantity<=199){
     discountedPrice=(costOneUnit-(costOneUnit*.01))*quantity;

}
    while (quantity>200&quantity<=299){
     discountedPrice=(costOneUnit-(costOneUnit*.02))*quantity;
}
    while (quantity>300&quantity<=399){
     discountedPrice=(costOneUnit-(costOneUnit*.03))*quantity;
}
    while (quantity>400&quantity<=499){
     discountedPrice=(costOneUnit-(costOneUnit*.04))*quantity;
}
    while (quantity>500&quantity<=599){
     discountedPrice=(costOneUnit-(costOneUnit*.05))*quantity;
}
    while (quantity>600&quantity<=699){
     discountedPrice=(costOneUnit-(costOneUnit*.06))*quantity;
}
    while (quantity>700&quantity<=799){
     discountedPrice=(costOneUnit-(costOneUnit*.07))*quantity;
}
    while (quantity>800&quantity<=899){
     discountedPrice=(costOneUnit-(costOneUnit*.08))*quantity;
}
    while (quantity>900&quantity<=999){
     discountedPrice=(costOneUnit-(costOneUnit*.09))*quantity;
}
    while(quantity<=1000&quantity>999){
      discountedPrice=(costOneUnit-(costOneUnit*.1))*quantity;  
    }
   return discountedPrice;
}  

1 个答案:

答案 0 :(得分:0)

&#34; &#34;在calculateCost()中应该是&#34; 如果&#34;

public double calculateCost(){
       ...
       while(speakerCheckBox.isSelected()){
              speakerPeripheral=89.00;
       }

       while(printerCheckBox.isSelected()){
             printerPeripheral=59.00;
       }
       while(scannerCheckBox.isSelected()){
             scannerPeripheral=415.00;
       }
       ....

if(speakerCheckBox.isSelected()){
      speakerPeripheral=89.00;
}