Rof*_*ion 20 java swing fullscreen jframe
在我的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();
}
}
Run Code Online (Sandbox Code Playgroud)
但在我的Mac上,我仍然可以看到Dock和OSX的顶部工具栏.那么如何创建一个真正消耗整个屏幕的JFrame呢?
编辑 我必须补充一点,我想从eclipse插件中调用那个JFrame.
iir*_*ekm 12
我还没有尝试过,但Java有全屏API,应该满足你的需求:
http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html
我知道答案.首先,我必须承认,如果您正在制作视频或电影播放器或动画播放器,以下技巧将无效.好的,这是我经过多次尝试后发现的:
假设你想按一个按钮(称为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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望你喜欢它
归档时间: |
|
查看次数: |
47792 次 |
最近记录: |