java - 需要帮助查找此 if 语句中的错误

标签 java

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

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

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 if(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
 }

关于java - 需要帮助查找此 if 语句中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479037/

相关文章:

java - 如果由于解析异常而被后退按钮破坏,Android 应用程序会崩溃

java - 进行空检查还是不进行空检查?

java - 左键单击时指针下 Sprite 的鼠标坐标偏移补偿问题

java - 互联网范围内的应用程序间通信

java - 在 jersey 中使用 streamoutput 响应时,我已经刷新了一些输出后如何处理异常?

java - 自定义 Spring Data JPA 构造函数异常

java - getObjectSummaries 会获取存储在 S3 存储桶中的对象的数量吗?

java - 类型参数 T#1 不在类型变量 T#2 的范围内

java - 使用java的机器人框架 - 如何将测试状态设置为 "Warning"

java - android如何更改启动 Activity