Atualizar Jframe com acao em outro Jframe

Fala galera, blz?
bem so extremamente noob em swing
e to com um probleminha pra resolver,
assim…
eu tenho um tela de cadastro de inventario
apartir do momento que eu nao tenho nenhum inventario cadastrado(CadastroInventarioUI)
os unicos botoes que eu poderia clicar no menu da tela principal(PrincipalUI)
seria o de cadastro de inventario
apartir do momento em que eu ja tenho um inventario, os botoes na PrincipalUI estariam liberados

a ideia era eu atualizar os botoes
atraves das acoes feitas dentro do CadastroIventarioUI

[quote=maxmustang]Fala galera, blz?
bem so extremamente noob em swing
e to com um probleminha pra resolver,
assim…
eu tenho um tela de cadastro de inventario
apartir do momento que eu nao tenho nenhum inventario cadastrado(CadastroInventarioUI)
os unicos botoes que eu poderia clicar no menu da tela principal(PrincipalUI)
seria o de cadastro de inventario
apartir do momento em que eu ja tenho um inventario, os botoes na PrincipalUI estariam liberados

a ideia era eu atualizar os botoes
atraves das acoes feitas dentro do CadastroIventarioUI[/quote]

Está usando banco de dados? Se estiver, quando o programa iniciar você vai verificar se tem algo cadastrado lá na tabela… SE tiver, deixa os botoes habilitados… se nao tiver nenhum cadastro:

botao.setEnabled(false);

ai quando você cadastrar lá no outro formulario, você pode fazer de duas maneiras:

  1. Deixar o botão como public e assim que cadastrar deixá-lo como public (usando o inverso do código acima)

  2. Criar um método na janela que o botão está, mais ou menos assim:

   public void Clicavel(){
        botao.setVisible(true);
   }

espero ter ajudado

[quote=maxmustang]Fala galera, blz?
bem so extremamente noob em swing
e to com um probleminha pra resolver,
assim…
eu tenho um tela de cadastro de inventario
apartir do momento que eu nao tenho nenhum inventario cadastrado(CadastroInventarioUI)
os unicos botoes que eu poderia clicar no menu da tela principal(PrincipalUI)
seria o de cadastro de inventario
apartir do momento em que eu ja tenho um inventario, os botoes na PrincipalUI estariam liberados

a ideia era eu atualizar os botoes
atraves das acoes feitas dentro do CadastroIventarioUI[/quote]

E aí, maxmustang!
Tudo bem?

Cara, você pode fazer buscas no seu banco de dados para validar a existência ou não de inventários.
Por exemplo, ao criar a tela de cadastro de inventário…

public InventarioForm extends JDialog
{
   // Suponhamos que sua classe Controller chame-se assim.
   private InventarioController controller = new InventarioController();

   // Você pode criar um TableModel para colocar os dados que aparecerão
   // na tela, se for exibí-los em uma JTable. Caso seja em outro componente,
   // pode fazer uso de um ArrayList.
   private InventarioTableModel model;


   public InventarioForm() 
   {
      // Suponhamos que você já tenha feito o código para instanciar e ajustar os componentes.
      // Vou suprimí-los para ficar menor o exemplo.
  
      // buscando todos os inventários existentes...
      List<Inventario> inventarios = controller.buscarInventarios();
      
      // Caso esteja usando uma tabela, faça uso de um TableModel para ela:
      model = new InventarioTableModel( inventarios );
      
      if ( model.buscarTotalInventarios() == 0 ) {

         // habilita somente o botão de cadastro.
      }
      else {

         // habilita outros botões.
      }

      // Caso não esteja usando tabelas, faça algo assim:
      if ( inventarios.size() == 0 ) {

         // habilita somente o botão de cadastro.
      }
      else {

         // habilita outros botões.
      }
   }
}

Legal, mas se eu cadastrar um novo inventário em outro formulário, como avisar a este que foi cadastrado um novo inventário e que os botões todos podem ser habilitados?
Você pode criar um método em sua tela de cadastro de novo inventário que retorne o objeto criado. Assim, você o adiciona na sua lista de controle ou no seu TableModel, e repete o processo de ativação/desativação de botões.

public class CadastroInventarioForm extends JDialog 
{
   private Inventario inventario;   
   public Inventario getInventario() { return inventario; }
}

E criar um ActionListener para o botão de cadastro:

buttonCadastrar.addActionListener( new ActionListener() {

   public void actionPerformed( ActionEvent e ) {
   
      inventario = new Inventario();
      inventario.setCampo1( "" );
      inventario.setCampo2( "" );
      inventario.setCampo3( "" );
      
      // cadastra no Banco de Dados.

      dispose();
   }
});

Nisso, na sua tela anterior, você faz a chamada desse método que retorna o objeto cadastrado para controle seu:

// Estou na classe InventarioForm, quando você clica no botão cadastrar:
buttonCadastrarInventario.addActionListener( new ActionListener() {

   public void actionPerformed( ActionEvent e ) {
   
      // mostra o formulário de cadastro...
      CadastrarInventarioForm form = new CadastrarInventarioForm();
      form.showDialog();
 
      // busca o objeto que você cadastrou...
      Inventario inventario = form.getInventario();  

      // e adiciona ele ou no TableModel...
      model.adicionarInventario( inventario );
      // ou na sua lista de controle!
      inventarios.add( inventario );
   
      // faz o processo de habilitar ou desabilitar os botões novamente.
   }
});

Caso não tenha entendido algo, é só perguntar!
Valeu, boa sorte!