quarta-feira, 7 de outubro de 2009

Re: RES: [java-br] Abrir Janelas

·

 

Pessoal

Desculpe o engano. Acabei não colando a tela princpal.

Aqui vai a mesma.
package menu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;

public class Aplicativo extends JFrame
{
private JMenuBar mMenu = new JMenuBar();
private JMenu mMenu1 = new JMenu("Menu 1");
private JMenu mMenu2 = new JMenu("Menu 2");
private JMenuItem mSubMenu1 = new JMenuItem("Tela 1");
private JMenuItem mSubMenu2 = new JMenuItem("Tela 2");
private Tela1 mTela1 = new Tela1();
private Tela2 mTela2 = new Tela2();
private OuvinteMenu mOuvinteMenu = new OuvinteMenu();

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Aplicativo tAplicativo = new Aplicativo();
tAplicativo.processar();
}
});
}

protected void processar()
{
this.getContentPane().add(new JLabel("Tela Principal",
JLabel.CENTER));
this.setJMenuBar(mMenu);
mMenu.add(mMenu1);
mMenu.add(mMenu2);

mMenu1.add (mSubMenu1);
mMenu2.add (mSubMenu2);

// Observar que aqui eu vinculo o menu à sua tela usando
mSubMenu1.putClientProperty("TELA", mTela1);
mSubMenu2.putClientProperty("TELA", mTela2);

// Aqui eu coloco o ouvinte genérico para os menus
mSubMenu1.addActionListener(mOuvinteMenu);
mSubMenu2.addActionListener(mOuvinteMenu);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 100);
this.setLocation(250, 250);
this.setVisible(true);
}

private class OuvinteMenu implements ActionListener
{
public void actionPerformed(ActionEvent pEvent)
{
JMenuItem tMenu = (JMenuItem) pEvent.getSource();
JFrame tTela = (JFrame) tMenu.getClientProperty("TELA");
tTela.setVisible(true);
}

}
}

--
José Augusto Martins Nieviadonski
Sun Certified Associate for Java Platform, Standard Edition
Especialista Técnico II - FX and Trade Systems - HSBC Bank Brasil S.A.
Professor - Pós-graduação Java - Faculdades SPEI
jose.augusto.martins@gmail.com
jaugusto@spei.br

Citando José Augusto Martins Nieviadonski <jaugusto@spei.br>:

> Pessoal.
>
> Vou sugerir outra implementação. Explico.
>
> Primeiramente eu coloco as caracteristicas das telas no seu proprio
> construtor, deixando somente a mesma "invisivel". Outro detalhes é que
> é usado o HIDE_ON_CLOSE nas telas para que os recursos das mesmas não
> sejam eliminados, pois o objeto relativo às telas fica sempre
> instanciado.
>
> As classes das telas são as seguintes:
> ----------------------------------------------------------
> package menu;
>
> import javax.swing.JFrame;
> import javax.swing.JLabel;
>
> public class Tela1 extends JFrame
> {
> public Tela1()
> {
> this.getContentPane().add(new JLabel("Tela 1", JLabel.CENTER));
>
> // Observar que eu somente escondo a tela, mantendo
> // o objeto alocado para uso posterior
> this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
> this.setResizable(false);
> this.setLocationRelativeTo(null);
> this.setSize(200, 100);
> this.setLocation(250, 350);
> }
>
> }
> ----------------------------------------------------------
> package menu;
>
> import javax.swing.JFrame;
> import javax.swing.JLabel;
>
> public class Tela2 extends JFrame
> {
> public Tela2()
> {
> this.getContentPane().add(new JLabel("Tela 2", JLabel.CENTER));
>
> // Observar que eu somente escondo a tela, mantendo
> // o objeto alocado para uso posterior
> this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
> this.setResizable(false);
> this.setLocationRelativeTo(null);
> this.setSize(200, 100);
> this.setLocation(550, 350);
> }
>
> }
> ----------------------------------------------------------
>
> Agora a tela principal. Observar os seguintes detalhes.
>
> 1) Eu ja deixo criada as telas 1 e 2, somente que elas não estão visíveis.
>
> 2) Eu coloco os objetos relativos às telas como propriedade do menu.
> Todo componente swing pode armazenar objetos dentro dele atraves do
> método putClienProperty, onde é fornecido uma chave em forma de String
> e o objeto a ser armazenado.
>
> 3) É feita a instalação de um único ouvinte de menu, genérico.
>
> 4) No ouvinte de menu, basta recuperar a proriedade aramazenada no
> item de menu acionado e chama o método setVisible para que a tela seja
> mostrada.
>
>
> Essa é uma possibilidade de implementação, pode haver outras, mas acho
> que atende a sua necessidade relatada no seu email.
>
> Abraço a todos da lista.
>
>
> --
> José Augusto Martins Nieviadonski
> Sun Certified Associate for Java Platform, Standard Edition
> Especialista Técnico II - FX and Trade Systems - HSBC Bank Brasil S.A.
> Professor - Pós-graduação Java - Faculdades SPEI
> jose.augusto.martins@gmail.com
> jaugusto@spei.br
>
>
>
> Citando André <deco0_07@yahoo.com.br>:
>
>> Obrigado Alison e Gustavo..
>>
>> Fiz da seguinte forma..ja me ajuda bastante pra não ficar digitando sempre
>> os mesmos codigos..rsrs
>>
>>
>>
>> public void AbreJanela(Object NomeJanela)
>>
>> {
>>
>> javax.swing.JFrame Formulario = (javax.swing.JFrame) NomeJanela;
>>
>> Formulario.setResizable(false);
>>
>> Formulario.setLocationRelativeTo(null);
>>
>> Formulario.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
>>
>> Formulario.setVisible(true);
>>
>> }
>>
>>
>>
>> Aí só instancio e chamo a função
>>
>>
>>
>> Usuario Cad_Usuario = new Usuario();
>>
>> AbreJanela(Cad_Usuario);
>>
>>
>>
>> Ciente Cad_Cliente = new Cliente();
>>
>> AbreJanela(Cad_Cliente);
>>
>>
>>
>>
>>
>> []'s
>>
>> De: java-br@yahoogrupos.com.br [mailto:java-br@yahoogrupos.com.br] Em nome
>> de Alisson
>> Enviada em: quarta-feira, 7 de outubro de 2009 Bomdia Andre 09:16
>> Para: java-br@yahoogrupos.com.br
>> Assunto: Re: [java-br] Abrir Janelas
>>
>>
>>
>>
>>
>> desculpe so retomando o que respondi.. a declaração do metodo esta certo..
>> porem o codigo interno ficaria mais ou menos assim
>>
>> Public void AbreJanela(JFrame NomeJanela){
>>
>> NomeJanlea.setvisible();
>>
>> voce nao precisa instanciar novamente pois ja esta passando uma instancia de
>> um objeto jframe.. entao, basta chamar o metodo!
>>
>>
>>
>>
>>
>>
>>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>
>
>
>

__._,_.___
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog