How to make a JFrame really fullscreen?

后端 未结 5 2038
深忆病人
深忆病人 2020-12-14 17:46

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 se         


        
5条回答
  •  有刺的猬
    2020-12-14 18:16

    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

提交回复
热议问题