Jinternalframe abrir outro jinternalframe[resolvido]

13 respostas
P

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
=)

13 Respostas

L

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
=)

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!

G

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.
P

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
=)

G

é 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.

P

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

assim tudo que se tem a fazer é colocar o action no frame que vai chamar o outro.

tipo por ex akela classe q eu postei antes se eu quiser abrir um jinternal frame dentro dela como fica?naum entendi :oops:
obg

G

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.

P

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…

P

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=)

G

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?

P

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:

G

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) {
        }
    }
}
P

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
=)

P

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

Criado 22 de março de 2011
Ultima resposta 24 de mar. de 2011
Respostas 13
Participantes 3