使用java Swing/AWT创建游戏界面

jhkqcmku  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(137)

我几周前开始编码,目前正在尝试使用Swing和AWT为游戏创建Java GUI。我创建了下面的代码。

public class UI {
    JFrame frame = new JFrame();
    JPanel backgroundPanel;
    JLayeredPane buttonPanel;
    JButton play = new JButton("Play!");
    JLabel background;

    public UI() {

        backgroundPanel = new JPanel(new BorderLayout());
        ImageIcon imgBackground = new ImageIcon(this.getClass().getResource("/img/connect4_4.png"));
        background = new JLabel("", imgBackground, JLabel.CENTER);
        backgroundPanel.add(background, BorderLayout.CENTER);
        backgroundPanel.add(play, BorderLayout.NORTH);
        frame.add(backgroundPanel);

        frame.setTitle("Connect 4");
        frame.setSize(450, 450);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

 
}

我用这段代码创建了一个面板,它有一个背景图像和一个位于屏幕顶部的播放按钮。然而,我想做的是把播放按钮放在图像的中心,它不需要全屏大小,而只是一个固定的大小(也许是50x50像素)。我该怎么做?

qq24tv8q

qq24tv8q1#

你是在正确的轨道上有一个JLayeredPaddle字段。但您的代码目前没有使用它。
你会想给给予那个JLayeredList一个OverlayLayout。当组件相互重叠时,大多数其他布局都没有定义它们的行为。
将背景组件和按钮都放置在JLayeredFrame中,然后仅将JLayeredFrame添加到框架中:

backgroundPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
backgroundPanel.setAlignmentY(Component.CENTER_ALIGNMENT);
play.setAlignmentX(Component.CENTER_ALIGNMENT);
play.setAlignmentY(Component.CENTER_ALIGNMENT);

buttonPanel = new JLayeredPane();
buttonPanel.setLayout(new OverlayLayout(buttonPanel));

buttonPanel.setLayer(backgroundPanel, JLayeredPane.DEFAULT_LAYER);
buttonPanel.setLayer(play, JLayeredPane.PALETTE_LAYER);

buttonPanel.add(backgroundPanel);
buttonPanel.add(play);

// ...

frame.getContentPane().add(buttonPanel);

相关问题