【问题标题】:The image cannot update other components (MVC)镜像不能更新其他组件(MVC)
【发布时间】:2011-03-31 02:38:06
【问题描述】:
import java.awt.event.ActionListener;
import java.util.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.AdjustmentEvent;

我还有其他几个框架(两个只是打入数字,另一个也是滚动条)。我可以使用其他组件来更新这个视图(这基本上显示了一个基于温标的图像框)。同样,我可以从此视图更新其他组件。

但是(已编辑),栏确实移动了,但图像保持不变.... 任何人都可以看到一个错误吗?感谢您对此的任何投入/谢谢!

【问题讨论】:

  • 您的 imports 中存在错误? 没有。为了尽快获得更好的帮助,请发帖 SSCCE

标签: java model-view-controller swing


【解决方案1】:

因为您要替换标签,所以您需要 remove() 组件和 validate() Container。或者,只需替换图标即可。

附录:我认为后一种方法更可取。缺少你的图片和剩余代码,让我们从这个example开始:初始化标签和滑块:

final JLabel label = new JLabel(pig);
final JSlider slider = new JSlider();

然后在监听器中,使用setIcon():

@Override
public void stateChanged(ChangeEvent e) {
    if (slider.getValue() < 50) {
        label.setIcon(pig);
    } else {
        label.setIcon(dog);
    }
}

【讨论】:

  • 嗨。我将如何更换图标?你的意思是 imagePanel.remove(imageLabel); imagePanel.revalidate();以及其余的添加?
  • 我正在编写一个完整的示例,但这作业:-) 我开始here 并在滑块的侦听器中使用label.setIcon
猜你喜欢
  • 1970-01-01
  • 2021-05-21
  • 2011-11-17
  • 2011-12-28
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多