Java 需要帮助查找此if语句中的错误吗

Java 需要帮助查找此if语句中的错误吗,java,Java,免责声明:这是一个(令人沮丧的)家庭作业相关问题 当我在屏幕上画我的物体时,我得到了奇怪的结果。我想要这个…我画第一个对象,然后画第二个对象,当我选择第三个对象来画屏幕时,我必须再次开始这个过程…我得到的是…我画第一个对象,我画第二个对象,我去画第三个对象屏幕清除…我选择第三个对象,但第二个对象是屏幕上显示的对象。请帮我指出正确的方向 package ui.panels; import java.awt.Choice; import java.awt.Panel; import java.aw

免责声明:这是一个(令人沮丧的)家庭作业相关问题

当我在屏幕上画我的物体时,我得到了奇怪的结果。我想要这个…我画第一个对象,然后画第二个对象,当我选择第三个对象来画屏幕时,我必须再次开始这个过程…我得到的是…我画第一个对象,我画第二个对象,我去画第三个对象屏幕清除…我选择第三个对象,但第二个对象是屏幕上显示的对象。请帮我指出正确的方向

package ui.panels;

import java.awt.Choice;
import java.awt.Panel;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import model.Model;
import interfaces.Resettable;

public class ChoicePanel extends Panel implements Resettable{
  public int i = 0;
  /**
   * 
   */
  private static final long serialVersionUID = 1L;
  Model model;
  Choice selection;

  public ChoicePanel(Model mdl) {
      model = mdl;
      selection = new Choice();
      for (String msg : Model.selections) {
          selection.add(msg);
      }
      selection.addItemListener(new ItemListener() {

          public void itemStateChanged(ItemEvent e) {
            if(i==1) {//drop down clicked three times)
              System.out.println("ChoicePanel says i == "+i);
              model.setMessage(selection.getSelectedItem());
              model.setCurrentShapeType(selection.getSelectedItem());
              //model.repaint();
              ++i;
            }else if(i==2){
              System.out.println("ChoicePanel says i == "+i);
              model.setMessage(selection.getSelectedItem());
              //model.setCurrentShapeType(selection.getSelectedItem());
              model.resetComponents();
              //--i;
            }else{
              model.setMessage(selection.getSelectedItem());
              //this line is what sends a value to shape that is drawn on screen
              model.setCurrentShapeType(selection.getSelectedItem());
              //model.repaint();
              ++i;
            }
          }

      });
      this.add(selection);
  }

  public void resetComponents() {
    System.out.println("resetComponents from ChoicePanel");
    //this resets the drop down list selection array to the first choice on the list
    selection.select(0);
    //this sets selected item in the selection array set in the above line
    //model.setMessage(selection.getSelectedItem());
    i=0;
    model.repaint();
  }

}
else中,如果(i==2){…}
不增加
i
,它将永远无法通过
2

} else if(i==2){
    System.out.println("ChoicePanel says i == "+i);
    model.setMessage(selection.getSelectedItem());
    //model.setCurrentShapeType(selection.getSelectedItem());
    model.resetComponents();
    ++i; // Increment here
 }
else中,如果(i==2){…}
不增加
i
,它将永远无法通过
2

} else if(i==2){
    System.out.println("ChoicePanel says i == "+i);
    model.setMessage(selection.getSelectedItem());
    //model.setCurrentShapeType(selection.getSelectedItem());
    model.resetComponents();
    ++i; // Increment here
 }

“i”是否存在于new ItemListener()的范围内?是的,因为“i”是封闭类的字段(尽管可能不是好的样式,尤其是因为它是公共的)。是否“i”甚至存在于new ItemListener()的范围内?是的,因为“i”是封闭类的字段(虽然可能不是很好的样式,尤其是因为它是公共的)…在达到第三种状态后,不应该将i重置为0吗?是的,在model.resetComponents();(它位于上面发布的代码的底部…)…在达到第三种状态后,您不应该将i重置为0吗?是的,在model.resetComponents();(它位于上面发布的代码的底部…)