JOPtionPane.showOptionDialog solto na tela o que fazer?

Amigos… estou com um problema e já faz tres dias que não consigo resolver. Criei uma Jframe como tela principal,e adicionei um menu. Na opcao sair do menu, coloquei um JopPane.shwouDialog confirmando “Sim” ou “Não”, mas esse componente pode ser arrastado pra fora da tela principal como resolver esse problema? Por favor me ajude quem puder.

Veja o codigo:

jmiAbandonar = new JMenuItem("Abandonar Sistema");
        jmiAbandonar.setMnemonic('A');
        jmSair.add(jmiAbandonar);
        jmiAbandonar.addActionListener(new ActionListener()
        {
           public void actionPerformed(ActionEvent event)
           {
              Object[] options = {"Sim", "Não"};
              int n = JOptionPane.showOptionDialog(null,"Deseja encerrar o programa","Confirmação",
              JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]);
              if (n == 0)
                 System.exit(0);
           }     
        });

O problema é que vc não está definindo quem é o “pai” do seu JOptionPane. Vc passou “null” para o método showOptionDialog. Tente passar uma referência para o seu JFrame.

Abraço!

você está passando null como argumento de

JOptionPane.showOptionDialog

Tire o null e coloque referencia para a janela (JFrame) da aplicação

quando o usuário clicar fora do diálogo ele toma um choque elétrico :smiley:

Desculpe a minha ignorancia, mas não entendi.

eu comeco o codigo assim:

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

public class Principal extends JFrame
{
    // Variavel da barra de menu
    private JMenuBar jmbBarra;
    // Variáveis do Menu Principal
    private JMenu jmFiladeespera;
    private JMenu jmEstacionamento;
    private JMenu jmAla;
    private JMenu jmAdministracao;
    private JMenu jmSobre;
    private JMenu jmSair;
    // Variáveis dos sub itens do menu
    private JMenuItem jmiInserirveiculo;
    private JMenuItem jmiDesistir;
    private JMenuItem jmiImprimirfila;
    private JMenuItem jmiTotalizarfila;
    private JMenuItem jmiEstacionar;
    private JMenuItem jmiRemover;
    private JMenuItem jmiTotalizarestacionamento;
    private JMenuItem jmiImprimirala;
    private JMenuItem jmiTotalizarala;
    private JMenuItem jmiUsuario;
    private JMenuItem jmiComponente;
    private JMenuItem jmiTarifa;
    private JMenuItem jmiAbrircaixa;
    private JMenuItem jmiFecharcaixa;
    private JMenuItem jmiBackup;
    private JMenuItem jmiRestore;
    private JMenuItem jmiAluno;
    private JMenuItem jmiAbandonar;
    // componentes da Janela Principal
    private JDesktopPane telaPrincipal;
public Principal()
    {
        super(" Projeto Interdisciplinar Horizontal 2006/2");
        telaPrincipal = new JDesktopPane();
        getContentPane().add(telaPrincipal);
              
        // Cria os componentes da Janela
        // Menu Fila de Espera ------------------------------------------
        jmFiladeespera= new JMenu("Fila de Espera");
        jmFiladeespera.setMnemonic('F');
         // Sub-menu ----------------------------------------------------
        jmiInserirveiculo= new JMenuItem("Inserir Veículo");
        jmiInserirveiculo.setMnemonic('I');
        jmFiladeespera.add(jmiInserirveiculo);
        jmiDesistir= new JMenuItem("Desistir");
        jmiDesistir.setMnemonic('I');
        jmFiladeespera.add(jmiDesistir);
        jmiImprimirfila= new JMenuItem("Imprimir ");
        jmiImprimirfila.setMnemonic('I');
        jmFiladeespera.add(jmiImprimirfila);
        jmiTotalizarfila= new JMenuItem("Totalizar a fila");
        jmiTotalizarfila.setMnemonic('I');
        jmFiladeespera.add(jmiTotalizarfila);
        // Execucao da opcao do submenu
        jmiInserirveiculo.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {  
                JInternalFrame frame = new JInternalFrame("teste", true, true, true, true);
                Container container = frame.getContentPane();
                frame.pack();
                telaPrincipal.add(frame);
                frame.setBounds(170, 150, 700, 500);
                frame.setResizable(false);
                frame.setIconifiable(false);
                frame.setVisible(true);
            }
        });
// Sub-menu - Abandonar ----------------------------------------
        jmiAbandonar = new JMenuItem("Abandonar Sistema");
        jmiAbandonar.setMnemonic('A');
        jmSair.add(jmiAbandonar);
        jmiAbandonar.addActionListener(new ActionListener()
        {
           public void actionPerformed(ActionEvent event)
           {
          
              Object[] options = {"Sim", "Não"};
              int n = JOptionPane.showOptionDialog(telaPrincipal,"Deseja        encerrar o programa","Confirmação",
              JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]);
              if (n == 0)
                 System.exit(0);
           }     
        });

Eu fiz dessa forma mas ainda não funcionou, o que está errado?

Outra coisa: na opcao do MenuItem jmiInserirveiculo como faço para abrir o frame maximizado?

no lugar de telaPrincipal coloca: this