I am trying to create a JFrame with a JRootPane that takes up the whole screen, however for some reason the content of the JRootPane does not fill up the the screen like it should.
I believe the issue is that the JRootPane does not fill its parent, but it could be possible that somehow the JRootPane's child panel doesn't fill up the root pane.
This is what it currently shows:
Here is the relevant code:
public class Runner {
public static void main(String[] args){
GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = graphicsEnvironment.getScreenDevices();
new MainFrame(devices[0]);
}
}
This is the JFrame with a rootPane that should fill it completely:
public class MainFrame extends JFrame{
private GraphicsDevice graphicsDevice;
private DisplayMode origDisplay;
private final JRootPane rootPane;
public MainFrame(GraphicsDevice graphicsDevice){
super();
this.setGraphicsDevice(graphicsDevice);
this.setOrigDisplay(graphicsDevice.getDisplayMode());
rootPane = new JRootPane();
rootPane.setContentPane(TitleScreenPanel.getInstance(this));
this.add(rootPane, BorderLayout.CENTER);
if (graphicsDevice.isFullScreenSupported()){
setUndecorated(true);
setResizable(false);
graphicsDevice.setFullScreenWindow(this);
revalidate();
}else{
System.out.println("Full-screen mode not supported");
}
try {
Theme.loadTheme(new File("res/IS.theme"));
UIManager.setLookAndFeel(new TinyLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
SwingUtilities.updateComponentTreeUI(this);
Toolkit.getDefaultToolkit().setDynamicLayout(true);
System.setProperty("sun.awt.noerasebackground", "true");
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
rootPane.revalidate();
}
public DisplayMode getOrigDisplay() {
return origDisplay;
}
public void setOrigDisplay(DisplayMode origDisplay) {
this.origDisplay = origDisplay;
}
public GraphicsDevice getGraphicsDevice() {
return graphicsDevice;
}
public void setGraphicsDevice(GraphicsDevice graphicsDevice) {
this.graphicsDevice = graphicsDevice;
}
}
The panel being added to the JRootPane:
public class TitleScreenPanel extends JPanel{
private static TitleScreenPanel titleScreenPanel;
private JButton exitButton;
private JButton startButton;
private TitleScreenPanel(final MainFrame context){
startButton = new JButton("START");
startButton.setFont(startButton.getFont().deriveFont(48f));
startButton.setBorder(BorderFactory.createEmptyBorder());
startButton.setContentAreaFilled(false);
exitButton = new JButton("Exit Full-Screen Mode");
exitButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
context.getGraphicsDevice().setDisplayMode(context.getOrigDisplay());
System.exit(0);
}
});
this.add(startButton, BorderLayout.CENTER);
this.add(exitButton, BorderLayout.SOUTH);
}
public static TitleScreenPanel getInstance(MainFrame context){
if(titleScreenPanel == null){
titleScreenPanel = new TitleScreenPanel(context);
}
return titleScreenPanel;
}
}