菜鸟求助| jframe窗口背景图刷新

marwi_study 2019-03-10 06:49:44
JFrame中刷新图片时一直显示第一次打开时显示的图片,查了资料之后说用invalidate()和repaint()可以解决,但是我用上之后依旧是只显示第一张图片,代码如下,求各位大神相助!!!
```
public static void setBackGround(String photoName) {
if(Pane!=null) {
win1.remove(Pane);
}
Pane = new JPanel(new BorderLayout());
ImageIcon img = new ImageIcon(photoName);
JLabel ImageLabel = new JLabel(img);
ImageLabel.setBounds(new Rectangle(img.getIconWidth(), img.getIconHeight()));
JPanel photoPane = new JPanel();
photoPane.setLayout(new FlowLayout(FlowLayout.CENTER));
photoPane.add(ImageLabel);
Pane.add(photoPane,BorderLayout.CENTER);

JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton last,next,auto,delect;
last = new JButton("<");
next = new JButton(">");
auto = new JButton("|>");
ButtonListener listener = new ButtonListener();
last.addActionListener(listener);
next.addActionListener(listener);
auto.addActionListener(listener);
buttonPane.add(last);
buttonPane.add(auto);
buttonPane.add(next);
Pane.add(buttonPane, BorderLayout.SOUTH);

win1.add(Pane);
win1.invalidate();
win1.repaint();
win1.setVisible(true);
}
...全文
232 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-03-12
  • 打赏
  • 举报
回复
引用 4 楼 marwi_study 的回复:
引用 2 楼 qq_39936465 的回复:
需要win1.remove(Pane);先要移除上次的设定,然后初始化,重绘。
我是用循环调用这一个方法的,所以第一步就是在移除上次的设定,也重新new了个新的JPanel呀,repaint也调用了,但是就是没有刷新


把repaint写到 add前面试试
marwi_study 2019-03-11
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465 的回复:
需要win1.remove(Pane);先要移除上次的设定,然后初始化,重绘。
我是用循环调用这一个方法的,所以第一步就是在移除上次的设定,也重新new了个新的JPanel呀,repaint也调用了,但是就是没有刷新
marwi_study 2019-03-11
  • 打赏
  • 举报
回复
引用 1 楼 delin_OneZero 的回复:
listener中是否调用repaint了呢?
listener是重新调用这个方法的,只是改图片
木子的木木 2019-03-11
  • 打赏
  • 举报
回复
listener中是否调用repaint了呢?
qq_39936465 2019-03-11
  • 打赏
  • 举报
回复
需要win1.remove(Pane);先要移除上次的设定,然后初始化,重绘。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧