【问题标题】:Unable to change image in jScrollPane upon clicking next [duplicate]单击下一步时无法更改 jScrollPane 中的图像 [重复]
【发布时间】:2017-05-22 19:15:04
【问题描述】:

我正在制作一个 jframe,我正在添加一个图像,当我单击下一步时,该图像会发生变化。我已经编写了一个代码,但它不起作用。这是代码:

    i++;
    ImageIcon icon = new ImageIcon(mean.get(0));
    Image image = icon.getImage(); // transform it
    Image newimg = image.getScaledInstance(180, 140,  java.awt.Image.SCALE_SMOOTH); // scale it the smooth way
    icon = new ImageIcon(newimg);
    JLabel label = new JLabel( icon );
    jScrollPane1= new JScrollPane( label );

请帮忙

【问题讨论】:

  • 你不需要告诉Java到repaint吗?
  • 试过了,没用
  • 编辑您的问题并显示初始化 jScrollPane1 的代码,以及将其添加到您的 JFrame 的代码。
  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2) 将您的 MSCVE / SSCCE 基于此working example。
  • @camickr...这个问题有关于如何添加图像的答案...在这里我想更改现有图像

标签: java swing


【解决方案1】:

问题出在:

jScrollPane1= new JScrollPane( label );

对象被放置在JFrame中的字段jScrollPane被设置为另一个JScrollPane,其对象未添加到GUI中。

将原始标签存储在字段中,例如jLabel1 并设置该标签。

可能需要repaint。

【讨论】:

  • 我试过了,但它不起作用
【解决方案2】:

您需要致电:

  • 重新验证()
  • 重绘()

在这里查看原因的解释Java Swing revalidate() vs repaint()

【讨论】:

  • 我试过了,但它不起作用
【解决方案3】:

将此添加到代码jScrollPane1 的末尾。如果还没有创建JFrame,已经创建了一个如下所示的,然后将jScrollPane1 添加到JFrame。

JFrame frame = new JFrame();
frame.add(jScrollPane1, BorderLayout.CENTER);

还有设置布局为BorderLayout,但你可以尝试其他布局,也可以不添加布局。

【讨论】:

  • 我已经创建了一个jframe
  • 因此您不必创建JFrame 只需输入您的JFrame 名称而不是frame
  • @ani 将 frame 更改为您的 JFrame 变量名。
  • 然后其他组件将被重新加载..我不想要那个..我只是想更改那个特定的图像。
  • @ani 使用 removeAll() 删除其他人。
猜你喜欢
  • 2022-01-05
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多