设置背景图像

时间:2013-04-16 16:31:55

标签: java swing jframe jpanel background-image

我怎样才能摆脱那个灰盒子?

这就是我所说的:

如果你能帮助我,我真的很感激

此处的完整代码:http://pastebin.com/nrpCTjvV

public final void initUI() {

    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

    panel.setBorder(new EmptyBorder(new Insets(90, 155, 40, 60)));

    JButton NewGame = new JButton  ("New Game!");
    JButton Highscore = new JButton("Highscore");
    JButton Credits = new JButton  ("Credits");
    JButton Website = new JButton  ("Website");
    JButton Exit = new JButton     ("Exit");

    panel.add(NewGame);
    panel.add(Box.createRigidArea(new Dimension(0, 5)));
    panel.add(Highscore);
    panel.add(Box.createRigidArea(new Dimension(0, 5)));
    panel.add(Credits);
    panel.add(Box.createRigidArea(new Dimension(0, 5)));
    panel.add(Website);
    panel.add(Box.createRigidArea(new Dimension(0, 5)));
    panel.add(Exit);

    final ButtonGroup entreeGroup = new ButtonGroup();
    JRadioButton radioButton;
    panel.add(radioButton = new JRadioButton("Music1"));
    radioButton.setActionCommand("Music1");
    entreeGroup.add(radioButton);
    panel.add(radioButton = new JRadioButton("Music2"));
    radioButton.setActionCommand("Music2");
    entreeGroup.add(radioButton);
    panel.add(radioButton = new JRadioButton("No Music", true));
    radioButton.setActionCommand("No Music");
    entreeGroup.add(radioButton);

    add(panel);
    pack();

    setTitle("Title");
    JLabel background = new JLabel(new ImageIcon("background.png"));
add(background);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setResizable(false);
    setSize(400, 400);

}

1 个答案:

答案 0 :(得分:3)

add(panel);
pack();
setTitle("Title");
JLabel background = new JLabel(new ImageIcon("background.png"));
add(background);

JFrame的默认布局管理器是BorderLayout。在未指定约束的情况下添加组件时,组件将添加到CENTER。您无法将多个组件添加到单个位置。

相反,您需要使用不同的组件作为背景。然后将面板添加到此组件。查看Background Panel。然后代码就像:

Background background = new BackgroundPanel(...);
background.add(panel);
add(background);
setResizable(false);
pack();
...
相关问题