Java 单击“下一步”时无法更改jScrollPane中的图像

Java 单击“下一步”时无法更改jScrollPane中的图像,java,swing,Java,Swing,我正在制作一个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

我正在制作一个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 );
请帮助

问题在于:

jScrollPane1= new JScrollPane( label );
将对象放置在JFrame中的字段
jScrollPane
设置为另一个jScrollPane,其对象未添加到GUI中

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

可能需要重新喷漆。

问题在于:

jScrollPane1= new JScrollPane( label );
将对象放置在JFrame中的字段
jScrollPane
设置为另一个jScrollPane,其对象未添加到GUI中

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

可能需要重新绘制。

您需要调用:

  • 重新验证()
  • 重画
请参见此处的说明,说明您需要呼叫:

  • 重新验证()
  • 重画

请参见此处的解释,说明为什么将此添加到代码的末尾
jScrollPane1
。如果尚未创建
JFrame
已创建一个如下所示的框架,则将该
jScrollPane1
添加到
JFrame

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

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

将此添加到代码的末尾
jScrollPane1
。如果尚未创建
JFrame
已创建一个如下所示的框架,则将该
jScrollPane1
添加到
JFrame

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


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

您不需要告诉Java重新绘制
吗?尝试过了。没有编辑您的问题并显示初始化
jScrollPane1
的代码,以及将其添加到JFrame中的代码。1)要更快地获得更好的帮助,请发布或。2) 将您的MSCVE/SSCCE建立在这个基础上。@camickr…这个问题的答案是关于如何添加图像的…这里我想更改现有图像您不需要告诉Java重新绘制吗?尝试过了。没有成功编辑您的问题并显示初始化的代码
jScrollPane1
,以及将其添加到JFrame中的代码。1)要更快地获得更好的帮助,请发布或。2) 将你的MSCVE/SSCCE建立在这个基础上。@camickr…这个问题的答案是关于如何添加图像的…在这里我想更改现有图像我尝试了它。但是它不工作。我尝试了。但是它不工作。但是它不工作。我尝试了。但是它不工作。我已经创建了一个JFrame,所以你不必创建一个
JFrame
只需放置您的
JFrame
名称而不是
frame
@ani将
frame
更改为您的
JFrame
变量名称。然后其他组件将被重新加载..我不想那样..我只想更改特定的图像。@ani使用
removeAll()
删除其他的。我已经创建了一个JFrame,所以你不必创建一个
JFrame
只需将你的
JFrame
名称而不是
frame
@ani change
frame
添加到你的
JFrame
变量名称中。然后其他组件将被重新加载..我不想那样..我只是想更改那个特定的名称image.@ani使用
removeAll()
删除其他内容。