java中的swing设计界面时怎么加上背景图片。而不覆盖什么label等控件?

java中的swing设计界面时怎么加上背景图片。而不覆盖什么label等控件?,第1张

通过以下方式设置下背景就可以了:

background = new ImageIcon("images/backImage.png")

backImage = new JLabel(background)

backImage.setBounds(0, 0, background.getIconWidth(),

background.getIconHeight())

backPanel = (JPanel) this.getContentPane()

backPanel.setOpaque(false)

this.getLayeredPane().setLayout(null)

this.getLayeredPane().add(backImage, new Integer(Integer.MIN_VALUE))

backPanel.setLayout(new BorderLayout())

这样就可以把图片放在最下面了,效果图

import javax.swing.*

import java.awt.*

/**

* @author Hardneedl

*/

final class PictureBackgroundFrame extends JFrame {

public String getTitle() {return "frame title"}

static private final Dimension size = new Dimension(600, 400)

public Dimension getPreferredSize() {return size}

public Dimension getMaximumSize() {return size}

public Dimension getMinimumSize() {return size}

public Dimension getSize() {return size}

private static final Image image = Toolkit.getDefaultToolkit().getImage("b.JPG")

private static final JComponent canvas = new JComponent(){

protected void paintComponent(Graphics g) {

super.paintComponent(g)

Graphics gg = g.create()

gg.drawImage(image,0,0,getWidth(),getHeight(),this)

gg.dispose()

}

}

PictureBackgroundFrame() throws HeadlessException {

attachListeners()

doLay()

}

private void attachListeners() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

private void doLay() {

Container container = getContentPane()

container.add(canvas)

pack()

setVisible(true)

}

public static void main(String[] args) {new PictureBackgroundFrame()}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11879224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存