gpt4 book ai didi

Java:哪种布局管理器最适合游戏菜单?

转载 作者:行者123 更新时间:2023-12-01 22:16:16 27 4
gpt4 key购买 nike

====================
游戏名称

播放
退出

====================

上面是我以前的游戏菜单的样子。我使用了 Box Layout 来创建它,但是非常乏味。有没有更好的布局管理器可供我使用?

这是为那些询问主 Pane 的人提供的代码。

private JButton JB;
private JButton EB;
private JOptionPane JO;

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

JPanel outside = new JPanel();
JPanel inside = new JPanel();
setLayout(new BorderLayout());



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");
title.setFont( new Font("Serif", Font.BOLD, 40));
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);
btt1.addActionListener(this);
btt1.setActionCommand("start");

inside.add(Box.createVerticalStrut(5));

inside.add(btt2);
btt2.addActionListener(this);
btt2.setActionCommand("credits");

inside.add(Box.createVerticalStrut(5));

inside.add(btt3);
btt3.addActionListener(this);
btt3.setActionCommand("exit");

inside.add(Box.createVerticalStrut(20));

add(outside);

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

inside.setBackground(Color.GRAY);
outside.setBackground(Color.GRAY);


}

最佳答案

我同意 BoxLayout 很乏味,但我欣赏它的相对简单性。

另一个快速简单的选择是使用“javax.swing.Box”类,而不是直接使用布局管理器。

Box box = Box.createVerticalBox();
box.add(new JLabel("Game"));
box.add(Box.createVerticalStrut(20));
box.add(new JLabel("Button 1"));
box.add(new JLabel("Button 2"));

JFrame frame = new JFrame();
frame.add(box);
frame.pack();
frame.setVisible(true);

Box 提供了许多有用的方法。您可以使用它来创建垂直和水平框,创建“支柱”来保留水平和垂直空间,并创建“胶水”来填充布局增长时的可用空间。

当然,您也可以使用 GridBagLayout,但我倾向于将其保留用于更复杂的布局。 Box 和他的表兄弟 BoxLayout 通常足以用于简单的布局,并且对于维护应用程序的新程序员来说很容易理解和调试。

关于Java:哪种布局管理器最适合游戏菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949642/

27 4 0