Java将窗口转换为JFrame

Java将窗口转换为JFrame,java,swing,awt,Java,Swing,Awt,我试图写一些代码,退出程序的全屏模式,进入窗口模式。目前,我的代码是这样的: package main2; import javax.swing.*; import java.awt.*; import java.awt.Color; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class main2 extends JFrame{ private Screen screen;

我试图写一些代码,退出程序的全屏模式,进入窗口模式。目前,我的代码是这样的:

package main2;

import javax.swing.*;
import java.awt.*;
import java.awt.Color;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class main2 extends JFrame{

    private Screen screen;

    public static void main(String args[]){

        DisplayMode dm = new DisplayMode(1900,1080,16, DisplayMode.REFRESH_RATE_UNKNOWN);
        main2 m = new main2();
        m.run(dm);

    }

    public void run(DisplayMode dm){
        setBackground(Color.CYAN);
        setForeground(Color.ORANGE);
        setFont(new Font("Arial", Font.PLAIN, 24));

        screen = new Screen();
        try{
            screen.setFullScreen(dm, this);
        }catch(Exception e){}

        getContentPane().addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                super.keyTyped(e);
                screen.restoreScreen();
            }
        });

        addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                super.keyTyped(e);
                screen.restoreScreen();
            }
        });

    }

    public void paint(Graphics g){
        if(g instanceof Graphics2D){
            Graphics2D graphics2D = (Graphics2D)g;
            graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        }
        super.paint(g);
        g.drawString("some text", 200, 200);
        g.setColor(Color.GREEN);
        g.drawRect( 300,300,100,100);
    }

    private class Screen {    
        private GraphicsDevice vc;
            public Screen(){
            GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
            vc = env.getDefaultScreenDevice();
        }

        public void setFullScreen(DisplayMode dm, JFrame window){
            window.setUndecorated(true);
            window.setResizable(false);
            vc.setFullScreenWindow(window);    
            if(dm != null && vc.isDisplayChangeSupported()){
                try{
                    vc.setDisplayMode(dm);
                }catch(Exception e){
                    System.out.println(e.getStackTrace());
                }
            }
        }

        public void restoreScreen(){
            Window w = vc.getFullScreenWindow();    
            JFrame frame = (JFrame)w;    
            if(w != null){
                w.dispose();
            }    
            vc.setFullScreenWindow(null);    
            frame.setSize(800, 600);
            frame.pack();
            frame.setVisible(true);
            frame.setLocation(10,10);
        }

        public Window getFullScreenWindow(){
            return vc.getFullScreenWindow();
        }    
    }
}

程序可以很好地退出全屏模式,但是没有显示JFrame窗口。任务栏上会出现一个java图标,但不会出现实际的窗口。任何帮助都将不胜感激。提前谢谢。

屏幕上是否有画?你也可以试着设置位置吗?谢谢你的提示,我试着这么做了,但没有效果:(为了更快地获得更好的帮助,发布一个(最简单的完整测试和可读的示例)。MCTaRE应该是一个源文件,如果它真的需要图像,它应该在运行时生成或热链接到它们!