webentwicklung-frage-antwort-db.com.de

Wie erstelle ich einen JFrame wirklich als Vollbild?

In meiner Java-Anwendung versuche ich, einen JFrame mit diesem Code wirklich als Vollbild darzustellen:

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();
    }
}

Auf meinem Mac kann ich jedoch immer noch das Dock und die obere Symbolleiste des OSX sehen. Wie kann ich also einen JFrame erstellen, der meinen gesamten Bildschirm wirklich verbraucht?

EDIT Ich muss hinzufügen, dass ich diesen JFrame von einem Eclipse-Plugin aus aufrufen möchte.

20

Ich habe es noch nicht ausprobiert, aber Java verfügt über eine Vollbild-API, die Ihren Anforderungen entsprechen sollte:

http://docs.Oracle.com/javase/tutorial/extra/fullscreen/index.html

12
iirekm

Ich weiß die Antwort. Erstens muss ich zugeben, dass der folgende Trick nicht funktioniert, wenn Sie einen Video- oder Movie-Player oder einen Animationsplayer erstellen. OK, das habe ich nach vielen Versuchen gefunden:

Angenommen, Sie möchten einen JFrame-Frame (genannt Frame) erstellen, wenn Sie eine Schaltfläche (FullscreenButton) drücken. Führen Sie dann die folgenden Schritte aus:

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;
               }
    }
    }
}

Ich hoffe, dass es Ihnen gefallen hat

5
PeGiannOS

Verwenden Sie com.Apple.eawt.FullScreenUtilities. Stellen Sie sicher, dass auf dem System Mac OS ausgeführt wird.

public void enableFullscreen(Window window, boolean bool) {
    if (System.getProperty("os.name").startsWith("Mac OS")) {
        com.Apple.eawt.FullScreenUtilities.setWindowCanFullScreen(window, bool);

    }

}
0
Hunter Munts

Ein Beispiel: 

import Java.awt.FlowLayout;
import Java.awt.GraphicsDevice;
import Java.awt.GraphicsEnvironment;
import Java.awt.event.ActionEvent;
import Java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;




public class FullScreenJFrame extends JFrame{

    private GraphicsDevice vc;

    public FullScreenJFrame(){
     super();

     GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
     vc= e.getDefaultScreenDevice();



     JButton b = new JButton("exit");
     b.addActionListener(
             new ActionListener(){
                 public void actionPerformed(ActionEvent arg0) { 
                     dispose();
                     System.exit(0);

                 }
             }
             );
     this.setLayout(new FlowLayout());
     this.add(b);
     setFullScreen(this);
 }

 public void setFullScreen(JFrame f){

     f.setUndecorated(true);
     f.setResizable(false);
     vc.setFullScreenWindow(f);


 }

 public static void main(String[] args){
     new FullScreenJFrame();
 }

}
0
Oscar Belletti
private Dimension screenSize; /* class level vars */
private swidth , sheight;

/*In GUI creating method:put this code: */
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
sheight = screenSize.height;
swidth = screenSize.width;
setBounds(0, 0, swidth, sheight-40);

NB: Mit swidth geben Ihnen Sheight Vars die Freiheit, sich weiter anzupassen.
Am besten verwenden Sie int vars anstelle von - 40, z. B. sheight/swidth - margin usw.
Hier sollte der Rand aus der Parametertabelle stammen. Vollständige Kontrolle über die Situation.
Direkte Verwendung auch möglich als: setBounds(0,0,screenSize.width, screenSize.height);

0
nukhan