Como 2 classes controlar o mesmo container?

Pessoal sou novatao com programação e criei um programa onde uma classe cria um container com um menuzinho e um JPanel escrito algumas coisas…

fiz tb com que um metodo dentro desta classe efetue algumas alteracoes no JPanel… funcionou com sucesso…

agora preciso que uma outra classe dentro do mesmo projeto controle o container/JPanel… mas nao consigo fazer isso… ela cria uma janela nova, nao quero isso… quero controlar a mesma janela mas com outra classe… isso eh possivel? estou fazendo besteira?
eh pro meu tcc

[]s

ah e eu ja pesquisei na net… nao encontrei nada… talvez tenha procurado de forma incorreta… :frowning:

abracos.

Iai cara, blza?

Fala como vc tá chamando sua classe do frame e mostra como esta o construtor da mesma.

Toda vez q vc faz uma chamada a uma classe, seu construtor e executado. Pode ser que no construtor do frame vc esteja chamando/construindo sua tela.

Abraço.

bom nao sei se esta mt ruim o codigo hehe, como disse sou novo em programacao

la vai:

Classe Main:

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;

/**
*

  • @author Spyman
    */

public class Main extends JFrame {

JPanel panel;
JLabel msg, msg2, msg3;    

Container container = getContentPane();


/** Creates a new instance of Main */
public Main() {
    super("BluePhoto");
    
   container.setLayout(new FlowLayout());
    
    //Configura menu Principal
    JMenu princMenu = new JMenu("Principal");
    princMenu.setMnemonic('P');
    
    //Configura item Novo Album no menu Principal      
    JMenuItem novoItem = new JMenuItem ("Novo Album");
    novoItem.setMnemonic('X');
    novoItem.addActionListener(
            new ActionListener() {
                public void actionPerformed (ActionEvent event){
                    //NovoAlbum();
                    Teste amora = new Teste();
                //JOptionPane.showMessageDialog(null, "" + x);
                }//Fim actionPerformed
            }//fim ActionListener
    ); //fim chamada addActionListener
    princMenu.add(novoItem);
    
    //Configura item Sair no menu Principal      
    JMenuItem sairItem = new JMenuItem ("Sair");
    sairItem.setMnemonic('X');
    sairItem.addActionListener(
            new ActionListener() {
                public void actionPerformed (ActionEvent event){
                    System.exit(0);
                }//Fim actionPerformed
            }//fim ActionListener
    ); //fim chamada addActionListener
    princMenu.add(sairItem);
    
    
    //Configura menu Ajuda
    JMenu ajudaMenu = new JMenu("Ajuda");
    ajudaMenu.setMnemonic('A');
    
    //Configura item Sobre no menu Ajuda      
    JMenuItem sobreItem = new JMenuItem ("Sobre");
    sobreItem.setMnemonic('S');
    sobreItem.addActionListener(
            new ActionListener() {
                public void actionPerformed (ActionEvent event){
                }//Fim actionPerformed
            }//fim ActionListener
    ); //fim chamada addActionListener
    ajudaMenu.add(sobreItem);
    
    
    //Cria Menu e insere menus Principal, Ajuda e Sair
    JMenuBar bar = new JMenuBar();
    setJMenuBar(bar);
    bar.add(princMenu);
    bar.add(ajudaMenu); 
    
}

public void Janela()
 {        
     panel = new JPanel();
     panel.setLayout(new GridLayout(3, 1, 30, 30));
     
     panel.setBackground(Color.LIGHT_GRAY);
     
     JLabel msg = new JLabel ("Bem Vindo ao BluePhoto! Comece já a criar seu álbum de fotos particular!", SwingConstants.CENTER);
     JLabel msg2 = new JLabel ("Para iniciar a criação do álbum acesse o menu Principal",SwingConstants.CENTER);
     JLabel msg3 = new JLabel ("Boa Diversão!",SwingConstants.CENTER);
     
     msg.setForeground(Color.BLACK);
     msg.setFont(new Font("Verdana", Font.BOLD, 15));
     
     msg2.setForeground(Color.BLACK);
     msg2.setFont(new Font("Verdana", Font.CENTER_BASELINE, 10));
     
     msg3.setForeground(Color.BLACK);
     msg3.setFont(new Font("Verdana", Font.CENTER_BASELINE, 10));
     
     panel.add(msg);
     panel.add(msg2);         
     panel.add(msg3);
     
     container.setBackground(Color.LIGHT_GRAY);
     container.add(panel);
     
     
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     setVisible(true);
     setSize(1024,768);
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    Main application = new Main();
    application.Janela();

// application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}[/code]

Classe Teste:

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;
/**
*

  • @author Spyman
    */
    public class Teste extends Main {

    public Teste() {
    container.setBackground(Color.BLACK);
    container.removeAll();
    container.repaint();
    setVisible(true);
    panel = new JPanel();
    panel.setLayout(new GridLayout(3, 1, 30, 30));
    }
    }[/code]

No construtor da class Main:

Main() {
         super("BluePhoto");
         
        container.setLayout(new FlowLayout());

.
.
. codigo

Voce está construindo sua janela.
Na classe Teste, vc extende Main. Então, qd vc executa a classe Teste, seu construtor faz uma chamada ao construtor da classe Main q por sua vez desenha outra janela.

Tente pensar em uma maneira de isso não acontecer, criando um metodo q cria a janela ou outro…

qualquer coisa posta ai…
abraço!

no construtor eu deixei somente o super e os demais codigos eu coloquei no metodo janela()

mesmo assim da o problema… ele abre uma nova janela, porem sem o menu, afinal o menu esta no metodo janela() e eu nao chamei este metodo na classe Teste

alguem tem um exemplo bem simples para me mostrar de 2 classes editando o mesmo container plz? :cry:

hum, detalhe:
estas classes estao em arquivos diferentes…