好吧,我想出了如何添加背景图片,但我如何让按钮显示。如果你有兴趣,我会做乒乓球。
这是我的代码:
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);
}
}
感谢您的回复。
答案 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,这将允许您指定一个“填充”每个单元格宽度的约束。