How to make a JFrame really fullscreen?
Solution 1
I haven't tried it yet, but Java has fullscreen API, which should meet your needs:
http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html
Solution 2
I know the answer. Firstly, I have to admit that the following trick won't work if you are making video or movie player or animation player. OK here is what i found after many tries:
Let's say that you want to make a JFrame (called frame) fullscreen when you press a button (called fullscreenButton).Then do the following :
import java.awt.*;
import javax.swing.*;
public class FullscreenJFrame extends JFrame{
private JPanel contentPane = new JPanel();
private JButton fullscreenButton = new JButton("Fullscreen Mode");
private boolean Am_I_In_FullScreen = false;
private int PrevX,PrevY,PrevWidth,PrevHeight;
public static void main(String[] args) {
FullscreenJFrame frame = new FullscreenJFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,500);
frame.setVisible(true);
}
public FullscreenJFrame(){
super("My FullscreenJFrame");
setContentPane(contentPane);
//From Here starts the trick
FullScreenEffect effect = new FullScreenEffect();
fullscreenButton.addActionListener(effect);
contentPane.add(fullscreenButton);
fullscreenButton.setVisible(true);
}
private class FullScreenEffect implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(Am_I_In_FullScreen == false){
PrevX = getX();
PrevY = getY();
PrevWidth = getWidth();
PrevHeight = getHeight();
dispose(); //Destroys the whole JFrame but keeps organized every Component
//Needed if you want to use Undecorated JFrame
//dispose() is the reason that this trick doesn't work with videos
setUndecorated(true);
setBounds(0,0,getToolkit().getScreenSize().width,getToolkit().getScreenSize().height);
setVisible(true);
Am_I_In_FullScreen = true;
}
else{
setVisible(true);
setBounds(PrevX, PrevY, PrevWidth, PrevHeight);
dispose();
setUndecorated(false);
setVisible(true);
Am_I_In_FullScreen = false;
}
}
}
}
I hope you enjoyed it
RoflcoptrException
Updated on July 09, 2022Comments
-
RoflcoptrException almost 2 years
In my Java application I try to make a JFrame really fullscreen by using this code:
public class MainFrame extends JFrame { private static final long serialVersionUID = 1L; public MainFrame() { super(); this.setTitle(); this.setUndecorated(true); this.setExtendedState(JFrame.MAXIMIZED_BOTH); this.setVisible(true); //this.pack(); } }
But on my Mac I can still see the Dock and the top toolbar of the OSX. So how can I create a JFrame that really consumes my whole screen?
EDIT I have to add that I want to call that JFrame from a eclipse plugin.
-
RoflcoptrException about 12 yearsThanks, but this doesn't seem to work when I create the JFrame from a eclipse plugin.
-
Gavin S. Yancey over 10 yearswhere do the magic numbers -10, -100, 30, and 110 come from (the amounts that setBounds is offset from the claimed screen size)? Is this portable with those same values? Will part of the window be off of the screen?
-
PeGiannOS over 10 years@g.rocket you are right those numbers just fit for my app.A parametric one is setBounds(0,0,getToolkit().getScreenSize().width,getToolkit().getScreenSize().height); not setBounds(-10,-100,getToolkit().getScreenSize().width+30,getToolkit().getScreenSize().height+110); i will edit it thx
-
Josiah Yoder about 8 yearsThis answer to another question gives some example code needed to make this approach work.