更改后如何重新绘制图像?
How to repaint Image after changing?
我有一个 JPanel
,其中我有一个 JLabel
,其中包含一个 Image
,像这样:
JLabel imageLabel = new JLabel(new ImageIcon(image));
之后,我设置了imageLabel
的bounds
,像这样:
//I want the Image to be in the middle of the screen!
imageLabel.setBounds((int) (screenSize.getWidth() / 2 - image.getWidth(null) / 2),
(int) (screenSize.getHeight() / 2 - image.getHeight(null) / 2),
image.getWidth(null), image.getHeight(null));
然后我将 imageLabel
添加到 JPanel
。
add(imageLabel);
现在我想更改 Image
,方法是使用 KeyEvent
(KeyEvent
有效)。我想,它改变了 Image
(通过使用 image = any other Image
),但它在屏幕上没有改变。
我怎样才能做到这一点?我尝试将 revalidate()
和 repaint();
添加到 JPanel。
I think, it changes the Image(by using image = any other Image),
那没有任何作用。您所做的只是更新变量以指向不同的图像。您实际上并没有将图像添加到标签中。
您需要重新设置标签的图标:
label.setIcon( new ImageIcon(...) );
我有一个 JPanel
,其中我有一个 JLabel
,其中包含一个 Image
,像这样:
JLabel imageLabel = new JLabel(new ImageIcon(image));
之后,我设置了imageLabel
的bounds
,像这样:
//I want the Image to be in the middle of the screen!
imageLabel.setBounds((int) (screenSize.getWidth() / 2 - image.getWidth(null) / 2),
(int) (screenSize.getHeight() / 2 - image.getHeight(null) / 2),
image.getWidth(null), image.getHeight(null));
然后我将 imageLabel
添加到 JPanel
。
add(imageLabel);
现在我想更改 Image
,方法是使用 KeyEvent
(KeyEvent
有效)。我想,它改变了 Image
(通过使用 image = any other Image
),但它在屏幕上没有改变。
我怎样才能做到这一点?我尝试将 revalidate()
和 repaint();
添加到 JPanel。
I think, it changes the Image(by using image = any other Image),
那没有任何作用。您所做的只是更新变量以指向不同的图像。您实际上并没有将图像添加到标签中。
您需要重新设置标签的图标:
label.setIcon( new ImageIcon(...) );