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?
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.
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)