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);
2.用JFrame的setUndecorated(true);然后再setSize(Toolkit.getDefaultToolkit().getScreenSize());
不过我试过,发现同上,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);
}
}