21

私のJavaアプリケーションでは、次のコードを使用してJFrameを実際にフルスクリーンにしようとしています:

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

しかし、私の Mac では、Dock と OSX のトップ ツールバーがまだ表示されます。では、実際に画面全体を消費する JFrame を作成するにはどうすればよいでしょうか?

EDIT EclipseプラグインからそのJFrameを呼び出したいことを追加する必要があります。

4

5 に答える 5

12

まだ試していませんが、Java にはフルスクリーン API があり、ニーズを満たすはずです。

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

于 2012-04-07T14:53:16.977 に答える
5

答えを知っている。まず、ビデオプレーヤー、映画プレーヤー、またはアニメーションプレーヤーを作成している場合、次のトリックは機能しないことを認めなければなりません。OKここに私が何度も試した後に見つけたものがあります:

ボタン(fullscreenButtonと呼ばれる)を押したときにJFrame(フレームと呼ばれる)をフルスクリーンにしたい場合は、次のようにします。

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

楽しんでいただけたでしょうか

于 2012-11-07T22:55:29.927 に答える
0
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);

注意: 幅、高さの変数を使用すると、自由にさらに調整できます。
最良の方法は、 egなどintの代わりに varsを使用することです。 ここで、マージンはパラメーター テーブルから取得する必要があります。状況を完全にコントロールする。 次のように直接使用することもできます。- 40sheight/swidth - margin

setBounds(0,0,screenSize.width, screenSize.height);

于 2015-11-15T18:04:58.543 に答える
0

com.apple.eawt.FullScreenUtilities を使用します。また、システムが Mac OS を実行していることを必ずテストしてください。

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

    }

}
于 2016-07-13T07:07:00.963 に答える