Я создаю игру, используя Java Swing, и возникает проблема в дизайне экрана «Game Over», который использует BoxLayout.
Итак, я выровнял по вертикали две JLabels с простыми сообщениями, и яЯ пытаюсь добавить еще одну "Play Again" JButton прямо ниже.(Вверху, на уровне JFrame, я использую BorderLayout.)
Я настроил JButton с загруженным ImageIcon (больше, чем размеры по умолчанию), но экран печатается как скриншот ниже:
Что может быть не так с моей реализацией?Это выглядит следующим образом:
//initialize the game over screen
JPanel overPanel = new GameOverScreen();
overPanel.setLayout(new BoxLayout(overPanel, BoxLayout.Y_AXIS));
JLabel message = new JLabel("Game Over!");
JLabel finalScore = new JLabel("Score: " + game.getScore());
//Play again button
JButton again = new JButton(new ImageIcon("files/again.jpg"));
again.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newGame();
}
});
again.setPreferredSize(new Dimension(450, 100));
again.setMargin(new Insets(0, 0, 0, 0));
again.setBorder(null);
//manage center alignments and add to JPanel
message.setAlignmentX(Component.CENTER_ALIGNMENT);
finalScore.setAlignmentX(Component.CENTER_ALIGNMENT);
overPanel.add(Box.createVerticalStrut(250)); //invisible spacers
overPanel.add(message);
overPanel.add(finalScore);
overPanel.add(Box.createVerticalStrut(50));
overPanel.add(again);
add(overPanel, BorderLayout.CENTER); //this is in a JFrame extended class