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);
}
});
cassio
Novembro 8, 2006, 7:03pm
#2
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
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?
iwallas
Novembro 8, 2006, 7:31pm
#5
no lugar de telaPrincipal coloca: this