I am having some difficulty figuring out why there is a difference between the results I see on the Title Screen and the Setup Screen. I copy/pasted the majority of the code before tweaking each... it clearly has to do with something in my outer frame, but I don't know what. The problem I am seeing is that although the Title Screen comes up at the correct size of 1024x768 with the background correctly displayed, the Setup Screen comes up as a very small window as though I had not just set it's size. The background image is also only shown in that sliver of space, even if the box is resized.
I have removed all of the elements inside of Title Screen but it still maintains its size. Can someone help? Thanks
OuterFrame
public class OuterFrame extends JFrame {
public OuterFrame(String windowHeading) {
int WIDTH = 1024;
int HEIGHT = 768;
final Dimension screenSize = new Dimension(WIDTH,HEIGHT);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JPanel title = new TitleScreen();
title.setLayout(new BoxLayout(title, BoxLayout.PAGE_AXIS));
JButton matchButton = new JButton("New Match");
//Add action listener to button
matchButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Execute when button is pressed
removeAll();
JPanel setupScreen = new SetupScreen();
add(setupScreen);
pack();
}
});
JButton exitButton = new JButton("Exit to Windows");
//Add action listener to button
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Execute when button is pressed
System.exit(0);
}
});
matchButton.setAlignmentX(title.CENTER_ALIGNMENT);
exitButton.setAlignmentX(title.CENTER_ALIGNMENT);
title.setPreferredSize(screenSize);
title.add(matchButton);
title.add(Box.createRigidArea(new Dimension(0,25)));
title.add(exitButton);
add(title);
pack();
}
}
Title Screen
public class TitleScreen extends JPanel {
public BufferedImage background;
public TitleScreen() {
try {
InputStream is = new BufferedInputStream(new FileInputStream("images/datascreen.png"));
Image image = ImageIO.read(is);
background = (BufferedImage)image;
} catch (Exception a) {
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(background,0,0,1024,768,null);
}
}
SetupScreen
public class SetupScreen extends JPanel {
public BufferedImage background;
public SetupScreen() {
try {
InputStream is = new BufferedInputStream(new FileInputStream("images/datascreen.png"));
Image image = ImageIO.read(is);
background = (BufferedImage)image;
} catch (Exception a) {
}
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(background,0,0,1024,768,null);
}
}
Sorry about the formatting.. I can't for the life of me make it keep the indention I use in my code.
Edit:
@Override
public Dimension getPreferredSize() {
return new Dimension(1024, 768);
}
I added the above to both the title and the setup classes, as well as removing the hard coded resize. The issue still occurs - the window is sized correctly for the title but not the setup. Any help would be appreciated..