覆盖JComponents的背景图像

时间:2016-01-29 15:51:41

标签: java image swing jlabel

我试图为学校制作一个游戏(作业)的注册表格,我已经完成了但是我想在它上面添加一个图像,但它会阻止一切,JButton,JTextField等。我怎么能解决这个问题? 已编辑:我将代码更糟糕地发生了同样的问题。

public class MyGUI {


JLabel xyz;
JButton b1;



public JPanel createContentPane () {



    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(null);

    xyz = new JLabel("Don't have an account? Sign up!");
    xyz.setBounds(10,0,390,30);
    xyz.setFont(new Font("Lucida Grande", Font.BOLD, 20));
    xyz.setLayout(new FlowLayout());
    mainPanel.add(xyz);


    b1 = new JButton("Create Account");
    b1.setBounds(40,540,310,33);
    b1.setFont(new Font("Comic San Ms", Font.BOLD , 16));
    b1.setForeground(Color.white);
    b1.setBackground(Color.blue);
    mainPanel.add(b1);

    return mainPanel;
}

public static void CreateAndShowGUI()  {

    JFrame frame = new JFrame("Romaverse ONLINE! REGISTRATION");

    Container c = frame.getContentPane();
    MyGUI demo = new MyGUI();
    c.add(demo.createContentPane());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(480,700);
    frame.setVisible(true);
    frame.setContentPane(new JLabel(new ImageIcon("C:\\Users\\Admin\\Desktop\\roma.jpg")));


}



public static void main(String[] args)  {


      javax.swing.SwingUtilities.invokeLater(new Runnable() {
             public void run() {
                    CreateAndShowGUI();
                    }       
                           });
                }

            }

这是我放置图像的部分

frame.setContentPane(newJLabel(newImageIcon("C:\\Users\\Admin\\Desktop\\roma.jpg"));

ERROR IMAGE IS BLOCKING IT This is where i take the image off

2 个答案:

答案 0 :(得分:0)

查看Background Panel

它显示了两种方法:

  1. 将图像添加到JLabel,然后将组件添加到标签
  2. 在JPanel上自定义绘制图像,然后将组件添加到面板中。
  3. 编辑:

    使用方法1的基本代码:

    JLabel background = new JLabel( new ImageIcon(...) );
    label.setLayout( new FlowLayout() );
    label.add( new JButton("Hello") );
    JFrame frame = new JFrame();
    frame.add( background );
    

答案 1 :(得分:0)

图片不会阻止按钮,会替换,因为您正在调用setContentPane。你为什么做这个?您只需将图像与createContentPane方法中的所有其他控件一起添加即可。请注意,添加控件的顺序可能会影响其Z顺序。