Problemas com JInternalFrame

5 respostas
gctsukasa

eu to fazendo um programa para VideoLocadora e não consigo rodar a minha class no JInternalFrame e que por sinal não sei mexer muito Bem…
o codigo é esse

package locadora;

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;
import javax.swing.WindowConstants;
  
public class Main extends JFrame{
    
    private JDesktopPane Main;
    private JMenuBar barraMenu;
    private JMenu Cadastro;
    private JMenu Consulta;
    private JMenu Relatorio;
    private JMenuItem cadClientes;  
    private JMenuItem cadFilmes;
    private JMenuItem conClientes;
    private JMenuItem conFilmes;
    private JMenuItem disponibilidade;
    private JMenuItem genero;
    private JMenuItem faixa;
    private JMenuItem ano;
    
    // iniciando método construtor
    public Main() {  
        super();  
 
        initialize();  
    }  
      
    private void initialize(){  
        
        // título da janela
        this.setTitle("LOCADORA");
        
        Main = new JDesktopPane();
        this.getContentPane().add(Main);
        
        //instanciando
        barraMenu = new JMenuBar();  
        this.setJMenuBar(barraMenu);
        Cadastro = new JMenu("Cadastro");
        barraMenu.add(Cadastro);
        cadClientes = new JMenuItem("Clientes");
                
        Consulta = new JMenu("Consulta");
        barraMenu.add(Consulta);
        
        cadClientes = new JMenuItem("Clientes");
        Cadastro.add(cadClientes);
           
        cadFilmes = new JMenuItem("Filmes");
        Cadastro.add(cadFilmes);
        
        conClientes = new JMenuItem("Clientes");
        Consulta.add(conClientes);
        conFilmes = new JMenuItem("Filmes");
        Consulta.add(conFilmes);
                
        Relatorio = new JMenu("Relatório");
        barraMenu.add(Relatorio);
        
        disponibilidade = new JMenuItem("Disponibilidade");
        Relatorio.add(disponibilidade);
        genero = new JMenuItem("Gênero");
        Relatorio.add(genero);
        faixa = new JMenuItem("Faixa Etária");
        Relatorio.add(faixa);
        ano = new JMenuItem("Ano de Lançamento");
        Relatorio.add(ano);
        
            // ACIONA BOTÃO CLIENTE NO MENU CADASTRO
            cadClientes.addActionListener(new ActionListener() {
            private CadastroCliente cadastro;
                
                public void actionPerformed(ActionEvent e) {
                
                // cria frame interna
                JInternalFrame cadastroCliente = new JInternalFrame( "Cadastro Cliente", true, true, true, true);
                cadastroCliente.setBounds(20, 20, 500, 300);
                Main.add(cadastroCliente);
                cadastroCliente.setVisible(true);
                }
            });
            //InternalFrame Cadastro Filme
            cadFilmes.addActionListener(new ActionListener()
            {
                private CadastroFilme cadastro;
                public void actionPerformed(ActionEvent e) {
                    JInternalFrame cadastroFilme = new JInternalFrame("CadastroFilme", true,true,true,true);
                    cadastroFilme.setBounds(20,20,500,300);
                    Main.add(cadastroFilme);
                    cadastroFilme.setVisible(true);
                    
                }
            });
            
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setSize(800,680);
        this.setVisible(true);
    }
    public static void main(String[] args) {
    Main apl = new Main();
    apl.setVisible(true);
    //CadastroCliente obj = new CadastroCliente();
   // apl.setVisible(true);
   }

}

ele tá aparecendo uma JInternalFrame em branco mais não sei como fazer para ele rodar minha class…

5 Respostas

novemberrain

será q vc pod me ajudar???

ViniGodoy

Oi, edita o seu tópico seguindo essas dicas:
http://www.guj.com.br/posts/list/50115.java

debug

gctsukasa, pelo que vi seu fonte criou u Jinternalframe mas nao adicionou nenhum componente nele, ou seja , vai apenas carregar uma tela branco mesmo :slight_smile:

o quer vc pode fazer é criar uma classe para seu frame filho (JinternalFrame)

public class Main extends JInternalFrame{ }
nessa classe vc adiciona os componentes conforme desejado e quando ocorrer o action listener vc chama essa classe :wink:

qq duvida poste ai

ate +

gctsukasa

soh que qdo eu coloco public class JInternalFrame o this.setTitle,getContentPane(),add e setJMenubar dão erro…
teria que importar alguma coisa pra corrigir esses erros?

EDIT: erros corrigidos.

agora… pra adicionar chamar a class eu teria que usar isso?

cadCliente.addactionListener(new ActionListener()
{
    public void  actionperformed(ActionEvent e)
{
    CadastroCliente Cadastro = new CadastroCliente();
    Cadastro.setVisible(true);
}
});

EDIT 2

agora eu instanciei minha class com

private CadastroCliente cadastroCliente;
public Main(){
super();
cadastroCliente = new CadastroCliente();

Só que ainda aparece em branco…

gctsukasa

Okay =) agora qu consegui fazer funcionar alem de intancia-lor eu tinha que usar public class extend JInternalFrame em todas as classes filhas e remover a linha JInternalFrame cadastroCliente = new JInternalFrame("Cadastro" true,true,true,true)

agora emm relação a outra duvida minha…
na minha class CadastroCliente tem dois JButton um é cadastar que vai armazenar as informações no meu banco de dados e cancelar que vai fechar a janela… qual comado eu usaria para fecha-la sem fechar o resto do programa?

Criado 12 de julho de 2008
Ultima resposta 14 de jul. de 2008
Respostas 5
Participantes 4