setUndecorated (true) a un JDialog creado a partir de una instancia de JOptionPane

Actualmente tengo unJDialog creado llamando alcreateDialog() método de mi instancia deJOptionPane:

JOptionPane pane = new JOptionPane(myPanel, JOptionPane.PLAIN_MESSAGE,JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);
dialog = pane.createDialog(null, "");

Quería poder eliminar la barra de título de laJDialog llamandosetUndecorated(true) sobre laJDialog, pero me sale unIllegalComponentStateException: The dialog is displayable excepción cuando intento ejecutar mi programa.

Por lo que sé, el diálogo no se muestra antes de que llamedialog.show(), lo que me lleva a creer que el diálogo se puede "mostrar" al instanciar el diálogo a través depane.createDialog() mucho más allá de mi comprensión de laJDialog API.

He intentado llamarsetVisible(false) antes de usarsetUndecorated(true), pero fue en vano.

Cualquier ayuda sería apreciada en cuanto a cómo o de ella es posible eliminar la barra de título de unJDialog de este tipo. Eliminando la barra de título de una normalJDialog es bastante fácil, como se ve en muchas otras respuestas a preguntas de este tipo, pero parece que no puedo hacer que funcione para unJDialog creado a través decreateDialog().

Código relevante:

            input= new JTextField(50);

        input.addKeyListener(new ConsoleKeyListener());


        input.addAncestorListener( new RequestFocusListener() );
        field = new JTextArea();
        field.setEditable(false);
        field.setLineWrap(true);
        JScrollPane area = new JScrollPane(field, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        field.setRows(10);
        field.setText(consoleText);
        JPanel myPanel = new JPanel();

        myPanel.setLayout(new BorderLayout(0,0));
        myPanel.add(input, BorderLayout.PAGE_END);
        myPanel.add(area, BorderLayout.PAGE_START);
        input.setFocusable(true);
        input.requestFocus();
        int result = 101;
        //int result = JOptionPane.showOptionDialog(null, myPanel,"", JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null);
        JOptionPane pane = new JOptionPane(myPanel, JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);

        dialog = pane.createDialog(null, "");
        dialog.setVisible(false);
        dialog.setUndecorated(true);
        //dialog.undecorated = true;


        //dialog.setOpacity(0.55f);
        removeMinMaxClose(dialog);
        removeMinMaxClose(pane); 
        removeMinMaxClose(myPanel);
        dialog.getRootPane().setOpaque(false);

        //JDialog dialog = new JDialog();
        //dialog.setVisible(false);
        //dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        //myPanel.setUndecorated(true);
        //dialog.setUndecorated(true);
        //dialog.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);  
        //dialog.setBounds( 100, 100, 300, 200 );  
        dialog.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.out.println("yo");
            }
        });
        dialog.setVisible(true);
        dialog.show();

Respuestas a la pregunta(1)

Su respuesta a la pregunta