1.用GraphicsEnvironment类:
GraphicsEnvironment ge= GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); JFrame frame = new JFrame();//也可以用JWindow,不过window听说不能获得焦点 frame.setUndecorated(true);//如果不要这一句,则全屏后frame的边框虽然不可见,但还是会占位置;但是要只一句之后边框就回不来了 gd.setFullScreenWindow(frame);
退出全屏:
GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice().setFullScreenWindow(null);
不过我试过,发现同上,setUndecorated之后好像就这设置不回来了,也就是这个frame就没有变边框了。。
也就是setUndecorated(false);没效果了,为什么呀?
3.我想让一个frame里面的一个显示图像的component全屏(不是整个Frame全屏),全屏之后还能回到有边框的Frame。我是这么解决的:
a.按下一个按钮是让这个显示图像的component全屏:新建一个JFrame,把这个component从原来的JFrame中remove出来,加入新的JFrame。用第二种方法让这个Frame全屏;
b.在这个显示图像的component添加keyListner,按下ESC键时用第二种方法推出全屏,再把这个component从新的JFrame中remove掉,添加到原来旧的的JFrame中
package fullscreen; import java.awt.BorderLayout; import java.awt.GraphicsEnvironment; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class OriginalFrame extends JFrame { JFrame fullScreenFrame; JLabel label; public static void main(String[] args){ new OriginalFrame(); } public OriginalFrame(){ final JLabel label = new JLabel("<html><font size=5 color=red>press ESC to quit full screen</font></html>"); label.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_ESCAPE){//用keycode判断时不能写在keyTyped方法里,否则keyCode都是0,不知为什么 fullScreenFrame.remove(label); OriginalFrame.this.add(label); GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(null); } } }); JButton button = new JButton("全屏"); add(label); add(button,BorderLayout.SOUTH); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub OriginalFrame.this.remove(label); fullScreenFrame.add(label); GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(fullScreenFrame); label.requestFocus(); } }); fullScreenFrame = new JFrame(); fullScreenFrame.setUndecorated(true); setSize(300,300); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } }