JFrame中的背景图像覆盖了我的按钮

时间:2015-03-27 20:19:05

标签: java swing

我在java中创建了一个JFrame并使用Jlabel导入了一个背景图像,但现在我的按钮不可见也无法使用,如何将图像移动到按钮后面或使背景透明。

2 个答案:

答案 0 :(得分:4)

没有代码就不可能说出什么是错的,但是你可能会在你的按钮之后添加你的JLabel,而JFrame的contentPane的BorderLayout正在导致一个组件JLabel覆盖另一个组件JButton。一个可能的解决方案:

  • 在JPanel的paintComopnent方法中绘制图像。
  • 将您的按钮添加到此JPanel
  • 将此JPanel添加到JFrame(其contentPane)。

如,

public class MyPanel extends JPanel {
    private BufferedImage img;

    public MyPanel(BufferedImage img) {
        this.img = img;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (img != null) {
            g.drawImage(img, 0, 0, null);
        }
    }

    @Override
    public Dimension getPreferredSize() {
        if (img != null) {
            int w = img.getWidth();
            int h = img.getHeight();
            return new Dimension(w, h);
        } else {
            return super.getPreferredSize();
        }       
    }
}

注意:代码未经过测试。

答案 1 :(得分:2)

  

background使用Jlabel的图片,但现在我的按钮不可见也不可用

当您使用JLabel时,您需要设置标签的布局管理器,以便显示按钮:

JLabel label = new JLabel(...);
label.setLayout( new FlowLayout() );
JButton button = new JButton("Hello");
label.add( button );