在Frame更改显示图片

冯立彬
优质创作者: 编程框架技术领域
2007-10-12 11:19:28
我写了一个panel,用于显示图片,代码如下:
..
public PicPanel(String picPath) {
try {
jbInit(picPath);
} catch (Exception e) {
e.printStackTrace();
}
}

JLabel jl = null;
ImageIcon img = null;

private void jbInit(String picPath) throws Exception {
this.setLayout(null);
setVisible(true);
img = new ImageIcon(picPath);
jl = new JLabel(img);
this.setLayout(new BorderLayout());
this.setSize(new Dimension(400, 359));
this.add(jl, BorderLayout.CENTER);

}
..
我在Frame中调用panel并把图片地址以参数发给panel:
PicPanel pp=new PicPanel("c:\\t.jpg");
panelCenter.add(pp,BorderLayout.NORTH);
this.getContentPane().add( panelCenter, BorderLayout.CENTER );
可以正常显示图片,
但我希望在FRAME中加入一个按钮方法,点击该按钮来切换panel中的图片,我采用的是如下方法:
private void button1_actionPerformed(ActionEvent e) {
pp=new PicPanel("c:\\t2.jpg");
panelCenter.add(pp,BorderLayout.WEST);
this.getContentPane().add( panelCenter, BorderLayout.CENTER );
}
不起作用。
请高手帮个忙,怎么样解决这个问题
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaguarlsl 2007-10-17
  • 打赏
  • 举报
回复
将面板获取回来,并取得上面的JLable物件,然后重新设置图片即可,不需要重新new PicPanel(),既耗时间又费内存
冯立彬 2007-10-17
  • 打赏
  • 举报
回复
这是一个很难的问题,还是一个不肖一顾的问题,
不管怎么样,还是请SWING老大轻抬贵手,给解决解决,或者您有例子什么的
给我一个
冯立彬 2007-10-15
  • 打赏
  • 举报
回复
上去
冯立彬 2007-10-12
  • 打赏
  • 举报
回复
是这样写吗:
private void button1_actionPerformed(ActionEvent e) {
pp=new PicPanel("c:\\t2.jpg");
panelCenter.validate();
panelCenter.add(pp,BorderLayout.NORTH);
panelCenter.updateUI();
panelCenter.repaint();
//this.getContentPane().add( panelCenter, BorderLayout.CENTER );
}
不行的
请再帮忙
江东闲客 2007-10-12
  • 打赏
  • 举报
回复
1. add Event;
2. repaint();
冯立彬 2007-10-12
  • 打赏
  • 举报
回复
照楼上几位的方法,我把方法改成这样也不行:
private void button1_actionPerformed(ActionEvent e) {
pp=new PicPanel("c:\\t2.jpg");
panelCenter.validate();
panelCenter.add(pp,BorderLayout.NORTH);
panelCenter.updateUI();
//this.getContentPane().add( panelCenter, BorderLayout.CENTER );
}
xiyuan1999 2007-10-12
  • 打赏
  • 举报
回复
帮顶

不会GUI编程

一般做WEB开发的
AppleYang2006 2007-10-12
  • 打赏
  • 举报
回复
panelCenter.add(pp,BorderLayout.NORTH);
panelCenter.add(pp,BorderLayout.WEST); pp应该放同一位置
panelCenter.updateUI();
tanlingyun 2007-10-12
  • 打赏
  • 举报
回复
你的事件处理怎么是button1_actionPerformed,我一直都认为是actionPerformed,这样写也行吗
你加validate方法看行不,它可以重新布置组件

62,623

社区成员

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

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