Java:如何使用按钮显示我的背景作为图片

时间:2015-04-16 18:06:31

标签: java swing

好吧,我想出了如何添加背景图片,但我如何让按钮显示。如果你有兴趣,我会做乒乓球。

这是我的代码:

public class Gui extends JFrame{
private JButton JB;
private JButton EB;

public Gui(){
    super("Pong");

    JPanel outside = new JPanel();
    JPanel inside = new JPanel();
    setLayout(new BorderLayout());
    this.setContentPane(new JLabel(new ImageIcon("S:\\Music\\Pong title pic.jpg")));

    outside.setLayout(new BoxLayout(outside, BoxLayout.LINE_AXIS));
    inside.setLayout(new BoxLayout(inside, BoxLayout.PAGE_AXIS));

    outside.add(Box.createHorizontalStrut(280));
    outside.add(inside);
    outside.add(Box.createHorizontalStrut(20));

    inside.add(Box.createVerticalStrut(20));
    JLabel title = new JLabel("Pong");
    inside.add(title);
    inside.add(Box.createVerticalStrut(20));

    JButton btt1 = new JButton("Start");
    Dimension d = new Dimension(200,40);

    btt1.setSize(d);
    btt1.setMinimumSize(d);
    btt1.setMaximumSize(d);
    btt1.setPreferredSize(d);

    JButton btt2 = new JButton("Credits");
    btt2.setSize(d);
    btt2.setMinimumSize(d);
    btt2.setMaximumSize(d);
    btt2.setPreferredSize(d);
    JButton btt3 = new JButton("Exit");
    btt3.setSize(d);
    btt3.setMinimumSize(d);
    btt3.setMaximumSize(d);
    btt3.setPreferredSize(d);

    inside.add(btt1);
    inside.add(Box.createVerticalStrut(5));
    inside.add(btt2);
    inside.add(Box.createVerticalStrut(5));
    inside.add(btt3);
    inside.add(Box.createVerticalStrut(20));

    add(outside);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(800,600);
    this.setVisible(true);
    this.setResizable(false);


}

}

感谢您的回复。

1 个答案:

答案 0 :(得分:2)

//setLayout(new BorderLayout());
this.setContentPane(new JLabel(new ImageIcon("S:\\Music\\Pong title pic.jpg")));
setLayout(new BorderLayout());

您可以设置布局,然后替换框架的内容窗格,以便松开布局管理器。

您需要在设置内容窗格后设置布局。

请注意,您只能使用标签作为背景,标签的图像大于添加到标签的组件。

此外,不要尝试使用setSize(),setPreferredSize(),setMinimumSize()和setMaximumSize()来操作按钮的大小。让按钮显示其首选大小。

如果您希望按钮全部大小相同,则首先使用GridLayout将按钮添加到面板。您可以在创建GridLayout时指定组件之间的间距。或者您可以使用GridBagLayout,这将允许您指定一个“填充”每个单元格宽度的约束。