Jinternalframe abrir outro jinternalframe[resolvido]

ola,
eu tenho um menu que extende um jframe,tenho uma outra tela que extende um jinternalframe que esta dentro do menu.Até ai tudo bem mas como eu faço para que a tela que extende o jinternalframe chame ou abra uma outra tela que extenda o jinternalframe?
é possivel?
obrigada
=)

[quote=paty_trind]ola,
eu tenho um menu que extende um jframe,tenho uma outra tela que extende um jinternalframe que esta dentro do menu.Até ai tudo bem mas como eu faço para que a tela que extende o jinternalframe chame ou abra uma outra tela que extenda o jinternalframe?
é possivel?
obrigada
=) [/quote]

Oi,

Você tem um JFrame e nele adicionado um JDesktopPane. Após isso, você abre um JInternalFrame e o adiciona dentro do JDesktopPane. Isso fará com que seu InternalFrame não saia da area Desktop.

Qual seria a sua ideia ? Porque abrir um outro JInternal a partir do primeiro JInternal ? :shock:

Tchauzin!

Não sei se é a melhor maneira mas meus internalFrame ficam em arquivos separados, com isso tudo que eu tenho de fazer é adiciona-lo no componente desktop a chamada sempre fica igual,

JIForm1 form1 = new JIForm1();
form1.setVisible(true);
FormPrincipal.desktop.add(form1);
try {
form1.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
para isso eu coloco o componente desktop como static assim posso acessa-lo de qualquer ponto do projeto.

oi lina,Gustavo!
obrigada pela ajuda eu vou modificar la na minha classe e qualquer coisa eu posto!
so uma coisa no meu menu eu fiz o seguinte:

JDesktopPane w= new javax.swing.JDesktopPane(); JMenuItem itemmt,itemPesquisa,itemPesq,itemcd,itemNotas,itemFinanceiro2,itemFinanceiro3,itemNovo,itemt1,itemt2,itemDado2,itemDado3,itemDado4,xyz ;
ah e fiz este action para cada classe q ta no menu

Action recup = new AbstractAction("Recuperacao") { public void actionPerformed(ActionEvent e) { telaRecuperacao c=new telaRecuperacao(); c.setVisible(true); recup.putValue(Action.SHORT_DESCRIPTION, "Exibe a tela de recuperação de notas"); w.add(c); } };
mas isto eu fiz para o primeiro internalframe e para o 2 seria mais ou menos isso cmo vcs falaram?
ou entendi errado?ou nem entendi? :shock:
muito obrigada pela ajuda
=)

é isso mesmo você não entendeu errado, a questão agora é que você quer acessar outro frame então, pode torna esses action que criou como public (só não sei se vai dar certo) e pode tornar o ‘w’ como static assim tudo que se tem a fazer é colocar o action no frame que vai chamar o outro.

Gustavo fiz o q tu disseste em relação ao static no Desktop e public nos actions e deu certo
mas não entendi a parte de [quote]assim tudo que se tem a fazer é colocar o action no frame que vai chamar o outro.[/quote]
tipo por ex akela classe q eu postei antes se eu quiser abrir um jinternal frame dentro dela como fica?naum entendi :oops:
obg

Imagina que você queira abrir aquela classe com um botão do lado do primeiro, você precisa de um action para ele certo? vai ser o mesmo método só que vai estar no primeiro Frame. exemplo:

Action
recup = new AbstractAction(“Recuperacao”)
{
public void actionPerformed(ActionEvent e)
{
telaRecuperacao c=new telaRecuperacao();
c.setVisible(true);
recup.putValue(Action.SHORT_DESCRIPTION, “Exibe a tela de recuperação de notas”);
FormPrincipal.w.add©;
}
};

não esqueça de colocar o nome do form que tem o componente desktop antes dele.

Gustavo fiz isto que tu disseste mas a minha tela não apareceu mas tipo naum deu erros então eu vou ver se eu esqueci de colocar alguma coisa na minha tela pera ai…

Gustavo,
não consegui fazer a outra tela aparecer mas tipo os system’s desta tela aparecem :shock: !!!
faltou eu fazer algo?
no menu eu fiz o seguinte

public Action cad = new AbstractAction("Cadastro de alunos") { public void actionPerformed(ActionEvent e) { Cadastro cadastro=new Cadastro(); cadastro.setVisible(true); cad.putValue(Action.SHORT_DESCRIPTION, "Exibe a tela de cadastro de alunos"); [b]Menu[/b].w.add(cadastro); } };
devo fazer mais alguma coisa?
obg=)

eu não sei se você também tentou colocar o menu em negrito como eu mas o [b] não precisa ficar no menu deixa ele assim:

public Action
cad = new AbstractAction(“Cadastro de alunos”)
{
public void actionPerformed(ActionEvent e)
{
Cadastro cadastro=new Cadastro();
cadastro.setVisible(true);
cad.putValue(Action.SHORT_DESCRIPTION, “Exibe a tela de cadastro de alunos”);
Menu.w.add(cadastro);
}
};

A propósito quem é Menu?

oi,
eu não tentei colocar o b em negrito!! :oops:
Menu é a unica classe que extende o jframe e é por meio dele que as outras telas(q extendem jinternalframe) estão sendo abertas
eu fiz deste jeito q tu disseste mas minha classe não ta aparecendo mas tmbm não ta dando erros e os syso q tem nesta tela(jinternalframe q esta sendo chamado pelo outro jinternalframe)estão sendo impressos :shock:

Olha como eu fiz:

public class Menu extends javax.swing.JFrame {

     public static javax.swing.JDesktopPane desktop;

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Menu().setVisible(true);
            }
        });

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        JITela1 tela1 = new JITela1();
        tela1.setVisible(true);
        desktop.add(selecionaArquivo);
        try {
            tela1.setSelected(true);
        } catch (java.beans.PropertyVetoException e) {
        }
    }
  }
}

public class JISelecionaArquivo extends javax.swing.JInternalFrame {

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        JITela2 tela2 = new JITela2();
        tela2.setVisible(true);
        Menu.desktop.add(selecionaArquivo);
        try {
            tela2.setSelected(true);
        } catch (java.beans.PropertyVetoException e) {
        }
    }
}
1 curtida

então esta ação(chamar a 2 tela) eu faço dentro da classe da 1 tela e dai so chamo a 1 tela no menu !!!
vou editar e ja posto
=)

obrigada Gustavo!!!
era isso mesmo que eu precisava fazer e deu certo fiz conforme o teu exemplo!!!
bah muito obrigada
=)