Java 摆动小程序在按钮 运行 时冻结

Java swing applet freezes when button run

这是我用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;
}  

calculateCost() 中的“while”应该是“if

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;
}