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