左
解决方案 »
- Hibernate集成Spring 的疑问!
- [求助]这个程序的结果没有变化吗?
- 谁能开发出java手机版的农场助手吗?
- 首先给大家拜个年,我想请教一下在struts 里怎么实现像asp.net 中的server.execute()方法呢???
- 向有经历的人请教JAVA学习顺序如javascripe,jsp,javaserverlet等或其它要学的东西的的学习顺序.我想专攻JAVA
- 请问大虾们什么是gridbaglayout什么是xylayout啊
- 社会上的人就你妈的认钱!钱少就没人来,钱一多来的人比给的钱还多!太垃圾了!我现在是一分钱也没有了
- 郁闷得要死!
- 如何学习java API,~~~~请教
- 在我的电脑上能编译出class文件 ,不知道什么原因不能运行,菜鸟问题,见笑!
- Struts 的Action方法中如何定义和抛出自定义异常?
- 如何快速将数据导入excel问题, 在线拜求解答
canvas.setSize(345,50);
add(canvas);
canvas.setSize(345,50);
add(canvas);
label.setIcon(new ImageIcon("123.jpg");
frame.add(label);
代码如下:
import javax.swing.*;
import javax.swing.border.TitledBorder;import java.awt.*;
import java.net.*;
public class ImagePanel extends JPanel{
/**
*
*/
private static final long serialVersionUID = 6521980729205616176L;
private Image image;
public ImagePanel()
{
}
public ImagePanel(Image image)
{
this.image=image;
}
// add by Tang Gaungchao
public ImagePanel(JPanel jp,String s)
{
this.setSize(jp.getSize());
jp.setLayout(null);
this.setBorder(BorderFactory.createTitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));
if(s.substring(0,4).compareTo(new String("http://").substring(0,4))==0)
{
try{
URL imageurl=new URL(s);
// image=Toolkit.getDefaultToolkit().(imageurl);
image=Toolkit.getDefaultToolkit().getImage(imageurl);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(image,0);
//this.repaint();
}
catch(MalformedURLException ex)
{
ex.printStackTrace();
}
}
else
{
image=Toolkit.getDefaultToolkit().getImage(s);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(image,0);
}
}
// add end
public ImagePanel(String s)
{
if(s.substring(0,4).compareTo(new String("http://").substring(0,4))==0)
{
try{
URL imageurl=new URL(s);
// image=Toolkit.getDefaultToolkit().(imageurl);
image=Toolkit.getDefaultToolkit().getImage(imageurl);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(image,0);
//this.repaint();
}
catch(MalformedURLException ex)
{
ex.printStackTrace();
}
}
else
{
image=Toolkit.getDefaultToolkit().getImage(s);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(image,0);
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image,0,0,this.getWidth(),this.getHeight(),this);
}
}
这段代码,是我以前写的,你看看,其功能是传入图片地址,如果地址是以HTTP开头,则做为网络图片载入,其他以本地图片载入.
//x,y is position
gBuffer.drawImage(image.getImage(),x,y,this);
我们一般在JFrame上添加组件往往都是加在contentPane上面:
frame.getContentPane().add(btn);
要在JFrame上添加背景图片,常见做法是加在layeredPane上面,并将contentPane设置成透明的即可。
// 将图片添加到layeredPane
ImageIcon img = new ImageIcon("steve.jpg");
JLabel imgLabel = new JLabel(img);
frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());
...
// 将contentPane设置成透明的
((JPanel)getContentPane()).setOpaque(false);
绝对可行,即使使用GIF文件也行,这是我百思不得其解的地方,因为我试过重写了JPanel的paint()方法,加了gif背景。结果在上面添加组件的时候发现因为使用gif文件的关系,Jpanel会不断重绘,增加的组件无法正常显示。(在上面加面板也无济于事)但是为什么JFrame就不会呢?