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
=)
Jinternalframe abrir outro jinternalframe[resolvido]
13 Respostas
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!
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
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
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) {
}
}
}
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
=)