
privateJPanelimagePanel
privateImageIconbackground
publicstaticvoidmain(String[]args){newTest()}
publicTest(){background=newImageIcon("1.jpg")//背景图片
JLabellabel=newJLabel(background)//把背景图片显示在一个标签里面
//把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0,0,background.getIconWidth(),background.getIconHeight())
//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel=(JPanel)frame.getContentPane()
imagePanel.setOpaque(false)
//内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(newFlowLayout())
imagePanel.add(newJButton("测试按钮"))
frame.getLayeredPane().setLayout(null)
//把背景图片添加到分层窗格的最底层作为背景
frame.getLayeredPane().add(label,newInteger(Integer.MIN_VALUE))
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
//重写JPanel的这个方法就可以了@Override
public void paintComponent(Graphics gs) {
Graphics2D g = (Graphics2D) gs
super.paintComponent(g)
//画背景图片
Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource(imgPath))
g.drawImage(image, 0, 0,width,height, this)
}
一个完整的代码:
package testimport java.awt.Graphics
import java.awt.Image
import java.net.URL
import javax.swing.ImageIcon
import javax.swing.JFrame
import javax.swing.JPanel
//为窗口添加背景图片
public class JFrameBackground {
private JFrame frame = new JFrame("带背景图片的JFrame")
private JPanel imagePanel
private ImageIcon backgroundimg
public JFrameBackground() {
imagePanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g)
URL location = this.getClass().getResource("grapes.gif")
backgroundimg = new ImageIcon(location)
Image img = backgroundimg.getImage()
g.drawImage(img, 0, 0, backgroundimg.getIconWidth(),
backgroundimg.getIconHeight(),
backgroundimg.getImageObserver())
frame.setSize(backgroundimg.getIconWidth(),
backgroundimg.getIconHeight())
}
}
frame.add(imagePanel)
frame.setVisible(true)
frame.pack()
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
public static void main(String[] args) {
new JFrameBackground()
}
}
这是运行的一个截图:
参考网址:
http://www.linuxidc.com/Linux/2011-08/41689.htm 两种设置背景的方法
http://blog.csdn.net/one_and_only4711/article/details/6594770 动态改变背景大小
使用现成的swingx提供的JXPanel
JXPanel panel = new JXPanel()BufferedImage bi = ...
panel.setBackgroundPainter(new ImagePainter(bi))
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)