Problema com fullscreen

Olá pessoal, estou fazendo uma tela de login para um trabalho da faculdade, e me deparei com o seguinte problema:

Tenho um DesktopPane e dentro dele um internalFrame, até ai blz. Configurei a minha janela para fullscreen com o seguinte código:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
   GraphicsDevice gd = ge.getDefaultScreenDevice();
       

    gd.setFullScreenWindow(this);

Só que quando eu rodo o aplicativo o internalframe fique com uma aparencia estranha, todo claro, como se o brilho do monitor estive no “1200” :shock:
ela fica como se estivesse em segundo plano, mais não está.

Como posso resolver este probleminha? E como fazer para que o internalFrame fique imóvel, sempre na posição inicial?

Não sei de onde você tirou esse código, mas o comando setFullScreenWindow faz muito mais do que só deixar a tela full screen. Ele ativa um modo conhecido como Full Screen Exclusive Mode (FSEM). Esse modo desabilita boa parte da pilha de pintura do Swing, e só deve ser usado se sua aplicação é realmente full screen, sem pipocar nenhuma janela modal, ou coisa do tipo. E esse não é o seu caso. Aplicações assim incluem players de vídeo e jogos.

Além disso, deve ser usado como janelas mesmo, como JFrame e JDialog, não com JInternalFrames.

Se você quer fixar o tamanho do seu JInternalFrame use o método setResizable passando o valor false. Para maximizar o JInternalFrame use o método setMaximum como true.

Bom, primeiramente muito obrigado pela explicação ViniGodoy, mas deixa eu me explicar melhor. Eu tenho uma classe chamada MdiLogin que extende JFrame e dentro dessa classe eu crio um DesktopPane que recebe um objeto de uma outra classe que extende internalframe. Eu não coloquei esse código no internalFrame e sim na classe MdiLogin.

Mas, por acaso teria uma outra forma de deixar a minha janela em fullscreen?

E como eu faço para que o internalframe fique imóvel dentro da janela?

Entendi.

De qualquer forma, o full screen desse jeito é para quando sua aplicação quer tomar controle total da tela. Ele não é prático para caso você queira deixar seu usuário usar outros programas, ou pipocar outras janelas sobre a tela.

Não existe uma forma de fixar a posição de um JInternalFrame. Você pode é capturar o evento de movimentação, e reposiciona-lo no local após ela ter sido completada. Para isso, use o addMouseMotionListener.

Mas, talvez seja melhor você só criar um JPanel, não um JInternalFrame. Até porque, não é muito comum janelas se “grudarem” na tela.

Aliás, procure evitar os JInternalFrames. A implementação deles no Swing é muito limitada e muito cheia de problemas. Por exemplo, não é possível colocar um JDesktopPane dentro de um JScrollPane. Assim, se seu JInternalFrame for para fora dos limites da janela, nenhuma scrollbar aparecerá. Quando você maximiza um JInternalFrame, a barra de títulos dele não deparece, como é padrão nas aplicações MDI.

Tudo bem viniGodoy, entendi, vou tentar fazer de outra forma sem o internalframe, muito obrigado. :smiley:

nao sei se funciona para internalframe

mas para frame funciona olhe o dim , é um Dimension.

setTitle("Tabuleiro"); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); // setTitle("Desenhando com Java"); setSize(dim); setResizable(true); setDefaultCloseOperation(EXIT_ON_CLOSE); Color NCor = new Color(250,240,180); getContentPane().setBackground(NCor)