Question

I am trying to make a menu screen for a game. I've added two buttons, play and exit, and am currently trying to figure out how to resize them. When I run my code the buttons are almost the exact same size (different I imagine because of the text). I'm using BoxLayout for my buttons, and I just read here Why will BoxLayout not allow me to change the width of a JButton but let me change the height? why it would only resize the width or height, but it's not resizing either right now. In my code I use BoxLayout.PAGE_AXIS, I don't know if that makes a difference, but it didn't resize vertically either with BoxLayout.Y_AXIS.

Here's my code:

public class Stage extends JFrame {
/* PRIVATE */
private JButton play, exit;

// Setup the Menu screen.
private void createMenuScreen() {
    Container window = getContentPane();
    // window.setBackground(Color.BLACK);
    JPanel menuScreen = new JPanel();
    menuScreen.setLayout(new BoxLayout(menuScreen, BoxLayout.PAGE_AXIS));
    window.add(menuScreen, "Center");

    play = new JButton("Play");
    play.setPreferredSize(new Dimension(20, 20));
    play.setAlignmentX(Component.CENTER_ALIGNMENT);



    exit = new JButton("Exit");
    exit.setPreferredSize(new Dimension(100, 100));
    exit.setAlignmentX(Component.CENTER_ALIGNMENT);
    menuScreen.add(play);
    menuScreen.add(exit);
}

/* PUBLIC */
public Stage() {
    // Setup the frame.
    setSize(224, 288);
    setLocationRelativeTo(null); // Centers the window.
    setUndecorated(true); // Removes the Windows border.
    setVisible(true);

    createMenuScreen();
}
}
Was it helpful?

Solution

Try to use setMaximumSize() method

exit.setMaximumSize(new Dimension(100,100));

Or try to use BorderLayout instead of BoxLayout

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top