本帖最后由 wenbodong 于 2011-05-31 22:13:19 编辑

解决方案 »

  1.   


    import java.awt.BorderLayout;
    import java.awt.Point;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class T extends JFrame implements ActionListener {
    //开始时左上角的位置,开始时的高度,宽度
    private Point start = new Point(300,150);
    private int width = 600;
    private int height = 400;

    private JButton max;
    private JButton normal;

    public T() {
    JPanel panel = new JPanel();
    max = new JButton("全屏");
    max.addActionListener(this);
    panel.add(max);

    normal = new JButton("退出全屏");
    normal.addActionListener(this);
    panel.add(normal);
    this.add(panel,BorderLayout.NORTH);
    this.setLocation(start);
    this.setSize(width, height);
    this.setUndecorated(true);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void actionPerformed(ActionEvent e) {
    if(e.getSource() == max) {
    this.setLocation(0, 0);
    this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
    this.repaint();
    } else if(e.getSource() == normal) {
    this.setLocation(start);
    this.setSize(width, height);
    this.repaint();
    }
    }

    public static void main(String[] args) {
    new T();
    }
    }这样写应该可以吧!
      

  2.   


    package T;import java.awt.BorderLayout;
    import java.awt.Point;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class T extends JFrame implements MouseListener {
    private boolean flag = false;
    //开始时左上角的位置,开始时的高度,宽度
    private Point start = new Point(300,150);
    private int width = 600;
    private int height = 400;


    public T() {
    this.addMouseListener(this);
    this.setLocation(start);
    this.setSize(width, height);
    this.setUndecorated(true);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
    new T();
    } public void keyPressed(KeyEvent e) {
    System.out.println(e.getKeyChar());
    } public void keyReleased(KeyEvent e) {
    System.out.println(e.getKeyChar());
    } public void keyTyped(KeyEvent e) {} public void mouseClicked(MouseEvent e) {
    //双击全屏或退出全屏
    if(e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
    if(flag) {
    normal();
    } else {
    max();
    }

    } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {}

    /**
     * 最大化
     */
    private void max() {
    flag = true;
    this.setLocation(0, 0);
    this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
    this.repaint();
    }

    /**
     * 退出全屏
     */
    private void normal() {
    flag = false;
    this.setLocation(start);
    this.setSize(width, height);
    this.repaint();
    }
    }双击全屏和退出全屏。
      

  3.   


    package T;import java.awt.Point;
    import java.awt.Toolkit;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JFrame;
    public class T extends JFrame implements KeyListener {
    private boolean flag = false;
    //开始时左上角的位置,开始时的高度,宽度
    private Point start = new Point(300,150);
    private int width = 600;
    private int height = 400;


    public T() {
    this.addKeyListener(this);

    this.setLocation(start);
    this.setSize(width, height);
    this.setUndecorated(true);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
    new T();
    } public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_SPACE) {
    if(flag) {
    normal();
    } else {
    max();
    }
    }

    //最大化时按esc键退出
    if(e.getKeyCode() == KeyEvent.VK_ESCAPE && flag) {
    normal();
    }
    } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) {} /**
     * 最大化
     */
    private void max() {
    flag = true;
    this.setLocation(0, 0);
    this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
    this.repaint();
    }

    /**
     * 退出全屏
     */
    private void normal() {
    flag = false;
    this.setLocation(start);
    this.setSize(width, height);
    this.repaint();
    }
    }按空格键全屏和退出全屏。在全屏时按esc键也能退出全屏。
      

  4.   

    楼上大哥,虽然你这个是可以滴,但是我要的不是这个效果,我要实现的是,非全屏状态是要有标题栏的。而这样的话,在全屏与非全屏之间切换时需要调用setUndecorated(),这时会引发异常
      

  5.   


    import java.awt.Point;
    import java.awt.Toolkit;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JFrame;
    public class T extends JFrame implements MouseListener {
        private boolean flag = false;
        //开始时左上角的位置,开始时的高度,宽度
        private Point start = new Point(300,150);
        private int width = 600;
        private int height = 400;
        
        
        public T() {
            this.addMouseListener(this);        
            this.setLocation(start);
            this.setTitle("全屏程序");
            this.setSize(width, height);
            //this.setUndecorated(true);
            this.setVisible(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
        public static void main(String[] args) {
            new T();
        }    public void keyPressed(KeyEvent e) {
            System.out.println(e.getKeyChar());
        }    public void keyReleased(KeyEvent e) {
            System.out.println(e.getKeyChar());
        }    public void keyTyped(KeyEvent e) {}    public void mouseClicked(MouseEvent e) {
            //双击全屏或退出全屏
            if(e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
                if(flag) {
                    normal();
                } else {
                    max();
                }
            } 
        }    public void mouseEntered(MouseEvent e) {}    public void mouseExited(MouseEvent e) {}    public void mousePressed(MouseEvent e) {}    public void mouseReleased(MouseEvent e) {}
        
        /**
         * 最大化
         */
        private void max() {
            flag = true;
            this.setLocation(0, 0);
            this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
            this.titled(true);
            this.repaint();
        }
        
        /**
         * 退出全屏
         */
        private void normal() {
            flag = false;
            this.setLocation(start);
            this.setSize(width, height);
            this.titled(false);
            this.repaint();
        }
        
        /**
         * 退去全屏时显示标题,全屏时不显示标题
         * @param title
         */
        private void titled(boolean title) {
         this.dispose();
            this.setUndecorated(title);
            this.setVisible(true);
        }
    }现在这个应该可以满足你的要求了吧!
      

  6.   

    呵呵,明白了,在调用setUndecorated之前需要dispose