私の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を呼び出したいことを追加する必要があります。
まだ試していませんが、JavaにはフルスクリーンAPIがあります。
http://docs.Oracle.com/javase/tutorial/extra/fullscreen/index.html
答えを知っている。まず、ビデオまたはムービープレーヤーまたはアニメーションプレーヤーを作成している場合、次のトリックが機能しないことを認めなければなりません。ここで[OK]を何度も試してみました:
ボタン(fullscreenButtonと呼ばれる)を押したときにJFrame(frameと呼ばれる)をフルスクリーンにしたいとしましょう。次に、次のようにします。
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;
}
}
}
}
楽しんでいただけたでしょうか
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);
}
}
例:
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();
}
}
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:swidthを使用して、sheight varsはさらに調整する自由を与えます。
最善の方法は、- 40
の代わりにint
varsを使用することです(例:sheight/swidth - margin
など)。
ここで、マージンはパラメータテーブルから取得する必要があります。状況を完全に制御する。
直接使用も可能です:setBounds(0,0,screenSize.width, screenSize.height);