Dúvida Usando MDI - JFrame, JDesktopPane e JInternalFrame

0 respostas
Gil_Ambrosio_Lopes_J

Olá amigos! Sou novo por aqui. Estou criando uma aplicação com várias janelas que têm de ser abertas em um JDesktopPane. Fiz o código de uma SplashScreen, o da Janela Principal com Menu e de uma das outras janelas que vão ser chamadas pelo clique no menu. Não vou postar o código da SplashScreen.
Janela Principal:

package Janelas;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Principal extends JFrame
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	//Cria Objeto oDesktop do tipo JDesktopPane.Ele vai dentro do JFrame
	private JDesktopPane oDesktop;
	
	//Configura a GUI
	public Principal()
	{
		super("Jogos de Números e Palavras");
		setBackground(Color.LIGHT_GRAY);
		setLayout(new FlowLayout());
		setExtendedState(MAXIMIZED_BOTH);
		setVisible(true);
		
		JMenuBar jmbPrincipal = new JMenuBar(); //Cria a barra de menus
		JMenu jmTiroBomba = new JMenu("Tiro e Bomba"); //Cria menu "Tiro e Bomba"
		jmbPrincipal.add(jmTiroBomba); // Adiciona Menu "Tiro e Bomba" a barra de Menus
		JMenuItem jmiJTiroBomba = new JMenuItem("Jogar"); //Cria Item "Jogar" 
		jmTiroBomba.add(jmiJTiroBomba); // Adiciona Item "Jogar" no Menu "Tiro e Boba"
		JMenu jmAcerteNum = new JMenu("Acerte o Número"); //Cria menu "Acerte o Número"
		jmbPrincipal.add(jmAcerteNum);// Adiciona Menu "Acerte o Número" a barra de Menus
		JMenuItem jmiJAcerteNum = new JMenuItem("Jogar");//Cria Item "Jogar"
		jmAcerteNum.add(jmiJAcerteNum);// Adiciona Item "Jogar" no Menu "Acerte o número"
        JMenu jmAnagramas = new JMenu("Anagramas"); //Cria menu "Anagramas"
        jmbPrincipal.add(jmAnagramas);// Adiciona Menu "Anagrmas" a barra de Menus
        JMenuItem jmiJAnagramas = new JMenuItem("Jogar");//Cria Item "Jogar"
        JMenuItem jmiMAnagrmas = new JMenuItem("Manter Palavras");//Cria Item "Manter Palavras"
        jmAnagramas.add(jmiJAnagramas);// Adiciona Item "Jogar" no Menu "Anagramas"
        jmAnagramas.add(jmiMAnagrmas);// Adiciona Item "Manter Palavras" no Menu "Anagramas"
        
        setJMenuBar(jmbPrincipal);//Configura a barra de menus para o aplicativo
        
        oDesktop = new JDesktopPane();//Cria o painel de área de trabalho
        add(oDesktop); // Adiciona o painel de área de trabalho ao frame
        
        jmiJTiroBomba.addActionListener
        (
        new ActionListener() //Classe interna anônima
        {
        	//Exibe novo InternalFrame
        	public void actionPerformed(ActionEvent event)
        	{
        		
        			JInternalFrame frame = new JInternalFrame("Tiro e Bomba",true,true,true,true); 
        			
        			Form_TiroBomba janelaTiroBomba = new Form_TiroBomba();
        			frame.add(janelaTiroBomba,BorderLayout.CENTER);
        			frame.pack();
        			
        			oDesktop.add(frame);
        			frame.setVisible(true);
         	}
        }
        ); 
        
	}
	
	
}

Agora o formulário que tem que ser aberto e ficar interno a tela principal:

package Janelas;

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class Form_TiroBomba extends JPanel
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public Form_TiroBomba() 
	{
		JLabel lblNumAEnc = new JLabel("Números a Encontrar:"); //Label Números a Encontar
		lblNumAEnc.setBounds(12,12,293,86);
		add(lblNumAEnc);
		lblNumAEnc.setVisible(true);
		JLabel lblQNumAEnc = new JLabel("0"); // Label Quantidade de Número a Encontrar
		JLabel lblNumEnc = new JLabel("Números Encontrados:"); //Label Números Encontrados
		JLabel lblQNumEnc = new JLabel("0"); //Label Quantidade de Números Encontrados 
		JLabel lblPalpite = new JLabel("Palpite:"); //Label Palpite
		JLabel lblTenRes = new JLabel("Tentativas Restantes"); //Label Tentativa Restantes
		JLabel lblQTenRes = new JLabel("0"); //Label Quantidade de Tentativas Restantes
		JLabel lblTenUs =  new JLabel("Tentativas Usadas:"); //Label Tentativas Usadas
		JLabel lblQTenUs = new JLabel("0"); //Label Quantidade de Tentativas Usadas 
		
		JTextArea txaInstrucoes = new JTextArea(); //TextArea Instções de Jogo
		
		JButton btnChutar =  new JButton("Chutar"); // Botão Chutar

		setLayout(new FlowLayout()); //Configura o layout de frame
		setSize(486,365);
		setVisible(true);
		
		
		
	}
		
}

Aqui, está o código completo. Outros componentes da janela ainda não foram feitos. Estou fazendo pelo eclipse na mão.
O que acontece é que o sistema roda sem erros, mas quando clico no JMenuItem correspondente a janela “Tiro e Bomba”, a mesma não abre e no console não mostra nenhum erro. Alguma dica ou solução para resolver esse problema. Agradeço a todos desde já!

Criado 16 de junho de 2016
Respostas 0
Participantes 1