Chamar JDialog causa exceção

Olá pessoal,

De dentro de um JFrame estou tentando chamar um JDialog com um detalhe: Ambos devem estar com a propriedade “.setUndecorated(true)”, ou seja, preciso abrir as duas janelas sem que elas apresentem aqueles botõezinhos (maximizar, minimizar e fechar).

O JFrame (principal) é apresentado na tela sem problemas, quando o usuário pressionar ENTER, o sistema deve apresentar o JDialog, mas o que ocorre são algumas exceções como esta aqui:

[color=red]Exception in thread “AWT-EventQueue-0” java.awt.IllegalComponentStateException: The dialog is displayable.
at java.awt.Dialog.setUndecorated(Dialog.java:1316)[/color]

Fiz um código de exemplo para que possam analizar.
Por favor, se alguém souber o porquê de não estar funcionando, me ajudem!

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;

public class Principal {
	public static void main(String[] args) {
		JFrame frame;
		
		frame = new JFrame("TESTE");
		frame.getContentPane().setLayout(null);
		frame.setBounds(200,200,200,200);
		frame.setUndecorated(true);

		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		frame.addKeyListener(new KeyListener(){
 			public void keyPressed(KeyEvent arg0){

 			}
 			public void keyTyped(KeyEvent arg0) {
 			}
 			public void keyReleased(KeyEvent e) {
 				int code = e.getKeyCode();
 				if (code == KeyEvent.VK_ENTER){
 					JDialog myDialog = new JDialog();
 					JLabel myLabel = new JLabel("TESTANDO 123");
 					
 					myDialog.add(myLabel);
 					myDialog.pack();
 					
 					//esta linha gera exceção, se comentar, roda normalmente
 					myDialog.setUndecorated(true);
 					
 					myDialog.setVisible(true);
 					
 				} 				
 			}
 		});
	}
}

Rapaz,

Você disse que se tirar essa linha funciona:

myDialog.setUndecorated(true);

Não sei, pode ser ignorância de minha parte, mas consultando a API não achei o método setUndecorated(). Será que por não existir para este componente, o mesmo retorna erro?!

Abraço! :wink:

[quote=Ratao]Rapaz,

Você disse que se tirar essa linha funciona:

myDialog.setUndecorated(true);

Não sei, pode ser ignorância de minha parte, mas consultando a API não achei o método setUndecorated(). Será que por não existir para este componente, o mesmo retorna erro?!

Abraço! :wink:[/quote]

Estou utilizando o Java 6, talvez a versão de seu JDK não seja a versão 1.6.