JAVA Stack Pop Error,尝试创建撤消

时间:2012-05-02 13:05:41

标签: java netbeans stack

我尝试使用undo button执行stack,以便删除应用的效果,例如blur等,但是当我尝试pop out image时1}}我存储在stack出错了,请帮助我,提前谢谢!

应用效果:

if (e.getSource() == btnGrayscale) {
  if (buffImage != null) {
    Imagesteps.push(buffImage);
    ImageEffects ie = new GrayscaleEffect();

    buffImage = ie.GrayscaleEffect(buffImage);
    Icon icon = new ImageIcon(buffImage);
    lblImage.setIcon(icon);
    statusBar.setText("Image is now Grayscaled");
  }
}

UNDO方法:

if (e.getSource() == undoimageitem) {
  BufferedImage temp = (BufferedImage) Imagesteps.pop();
  Icon icon = new ImageIcon(temp);
  lblImage.setIcon(icon);
  statusBar.setText("Undo");
}

1 个答案:

答案 0 :(得分:1)

从您获得的异常看来,您正试图从空堆栈中弹出。为避免此错误,理想情况下,在弹出之前,请确保堆栈的大小至少大于或等于1.

至于你获得例外的原因,原因可能很多。我想到的有两个:

  • 在推送项目并从堆栈弹出项目之前,您正在代码中的某个位置重新初始化/清除堆栈。

  • 假设像大多数按钮一样,只需单击一下即可激活该方法,您双击该按钮,从而导致事件触发两次,这可能导致代码执行两次弹出操作,导致问题。