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);
}
}
});
}
}