import javax.swing.ImageIcon
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JPanel
public class bj {
private JFrame frame = new JFrame("背景图片测试")
private JPanel imagePanel
private ImageIcon background
public static void main(String[] args) {
new bj()
}
public bj() {
background = new ImageIcon("C:\\Users\\xin.wen\\Pictures\\2.jpg")// 背景图片
JLabel label = new JLabel(background)// 把背景图片显示在一个标签里面
// 把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0, 0, background.getIconWidth(),
background.getIconHeight())
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel) frame.getContentPane()
imagePanel.setOpaque(false)
// 内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout())
imagePanel.add(new JButton("测试按钮"))
frame.getLayeredPane().setLayout(null)
// 把背景图片添加到分层窗格的最底层作为背景
frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE))
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setSize(background.getIconWidth(), background.getIconHeight())
frame.setResizable(false)
frame.setVisible(true)
}
}
import javax.swing.*import javax.imageio.*
import java.awt.*
import java.io.*
public class AddImage {
public static void main(String[] args){
new AddImageFrame()
}
}
class AddImageFrame extends JFrame{
public AddImageFrame(){
super("添加背景图片")
setBounds(200,200,500,400)
setDefaultCloseOperation(this.EXIT_ON_CLOSE)
setVisible(true)
AddImagePanel aip= new AddImagePanel()
add(aip)
}
}
class AddImagePanel extends JPanel{
private Image backgroundimage=null
public void paintComponent(Graphics g){
super.paintComponent(g)
try{
backgroundimage=ImageIO.read(new File("E:/picture/http_imgload.jpg")).getScaledInstance(getWidth(),getHeight(),Image.SCALE_FAST)
}catch(IOException e){
e.printStackTrace()
}
g.drawImage(backgroundimage,0,0,null)
image.flush()
}
}
这是设置背景图片的简单代码 你要的主要是 backgroundimage=ImageIO.read(new File("E:/picture/http_imgload.jpg")).getScaledInstance(getWidth(),getHeight(),Image.SCALE_FAST)
javax.image包里面有一个类 ImageIO有一个方法read(File string) 读取一个图片文件返回image对象,File会抛出异常,awt包里面的Image有个方法 getScaledstance(width,height,hints) 是缩放图片到多大,intnts是缩放的算法,取Image字段常量,有很多钟算法,你可以取一种,这个程序里图片的大小取的是容纳它的panel面板的大小,会随着面板的变化充满整个面板,这个变化过程要调用面板的 paintComponent()方法来监视,Graphics 中的drawImage(x,y,observer)方法来实现,observer是安全管理器,可以为null,最后绘画完后刷新就可以了,希望对你有帮助,俺也是初学者,交流为上 ,不过我个人还是认为下面的方法比较好
public void setBak() { //设置窗口背景
((JPanel) this.getContentPane()).setOpaque(false)
ImageIcon img = new ImageIcon(getClass().getResource("picture/http_imgload.jpg"))
JLabel background = new JLabel(img)
this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE))
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight())
}构造器调用这个方法图片不会缩放,上面的例子 不用缩放的方法也可以做到,就看怎么看了
可以新建个面板,在面板里放入带图片的JLabel,填满面板即可。JPanel jp = new JPanel()//新建面板
jp.setLayout(new FlowLayout()) //设置面板布局
ImageIcon ii=new ImageIcon(getClass().getResource("/Picture/i.jpg"))
JLabel uppicture=new JLabel(ii)//往面板里加入JLabel
this.setVisible(true)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)