Página Inicial do Fórum > Java Básico

Chamando uma aplicação Java a partir de outra através de um botão



Criar novo tópico   Responder tópico


  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    Boa noite Gente!!!

    Gostaria de saber se existe algum método() ou alguma maneira de fazer uma aplicação Java chamar outra aplicação Java Externa por meio de um ActionPerformed de um botão, e ao fechar qualquer uma delas a outra não feche também (afinal de contas ambas estão configuradas como setDefaultCloseOperation(EXIT_ON_CLOSE)). Minha intenção é criar um programa modular (em que o cliente opte por quais módulos ele tem interesse, e a partir da identificação de uma necessidade adicional ele possa adquirir o módulo desejado sem ter que trocar o programa inteiro. Vale ressaltar que ambos os programas compartilham da mesma biblioteca (um Driver JDBC para conexão com o banco de dados) e que, no caso de instalar um ou mais módulos, todos serão instalados na mesma pasta raiz para poderem ter acesso à pasta lib (em comum).
    Obrigado aos que puderem me dar alguma dica!!!




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    Duas "aplicações" diferentes? ou duas "JFrame" diferentes?

    Eu acho que o que você quer saber é Como abrir uma JFrame de outra JFrame?
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    Na verdade são dois JAR's mesmo. Ou seja, um JAR chamando o OUTRO.




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    rolipam78
    Na verdade são dois JAR's mesmo. Ou seja, um JAR chamando o OUTRO.



    E que diferença isso faz?
    Se o jar estiver no CLASSPATH do outro, você pode usas as classes dele do mesmo jeito.

    A questão é: Você quer duas aplicações independentes, mas com alguma comunicação entre si, ou simplesmente usar as JFrame do outro .jar?
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    As Aplicações são independentes, mas quero que exista a possibilidade de comunicação entre os módulos. Para ser mais claro... Criei uma aplicação (JAR) para Cadastro de Clientes, um JAR para Cadastro de Funcionários, um JAR para Cadastro de Serviços e outro JAR para Cadastro de Agendamento de Serviços (Data e Hora Marcada). Minha intenção é quando abrir o programa "Agenda.JAR" para fazer um agendamento e por acaso o cliente ainda não for cadastrado no estabelecimento, o funcionário poder abrir o programa de cadastro de clientes a partir da Agenda, sem ter que sair de um programa para fazer o cadastro e depois voltar. Existe uma tela intermediária (um Grid com um tf para pesquisar o cliente e uma jTable para Carregar os clientes do banco de dados, além de um botão para adicionar um novo cliente, que deverá chamar a minha aplicação "CadCliente.JAR".
    Eu também podia Criar o programa Agenda.JAR copiando todas as classes dos outros programas para dentro desse projeto, mais dessa forma perderia o sentido de MODULAR o PROGRAMA.
    Como posso configurar um JAR no classpatch de outro JAR (devo fazer isso para ambos os JAR's?) Utilizo o NetBeans 7.1 (como realizo essa inclusão?)
    Obrigado.




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    Ou seja, você simplesmente dividiu todos os seus "cadastros" em .jar diferentes.

    Isso não torna as aplicações indepentes.
    Você simplesmente vai chamas as JFrame do outro .jar, não muda nada.
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    Para esse Exemplo que eu dei, realmente as aplicações não são independentes, mas isso porque meu projeto ainda está no início. Pretendo ainda construir a parte de Controle de Estoque e Frente de Loja (que compartilharão o Cadastro de Clientes, Funcionários, Serviços, Produtos, Fornecedores, Entradas, Saídas, Cabeçalho da venda e Detalhes da venda, e nesse caso não teria a necessidade de criar essas classe novamente para os outros módulos. Mas por agora, para o projeto Agenda, os cadastros realmente não são independentes do meu programa principal (Agenda).
    Sendo assim, como posso chamar a JFrame de um JAR a partir de outro JAR? É justamente nesse ponto que estou me "batendo".




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    rolipam78
    Para esse Exemplo que eu dei, realmente as aplicações não são independentes, mas isso porque meu projeto ainda está no início. Pretendo ainda construir a parte de Controle de Estoque e Frente de Loja (que compartilharão o Cadastro de Clientes, Funcionários, Serviços, Produtos, Fornecedores, Entradas, Saídas, Cabeçalho da venda e Detalhes da venda, e nesse caso não teria a necessidade de criar essas classe novamente para os outros módulos. Mas por agora, para o projeto Agenda, os cadastros realmente não são independentes do meu programa principal (Agenda).
    Sendo assim, como posso chamar a JFrame de um JAR a partir de outro JAR? É justamente nesse ponto que estou me "batendo".



    Sim, não muda nada.
    E com o controle de estoque não vai mudar nada.

    Se os .jar estiverem no classpath e você tiver acesso às classes por fora do pacote, não muda nada.
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    BLZ, então, como faço para configurar o classpath dos meus JAR's para que um enxergue o outro, e eu possa ter acesso e utilizar suas classes a partir de outro JAR?

    Valeu a força!!!




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    rolipam78
    BLZ, então, como faço para configurar o classpath dos meus JAR's para que um enxergue o outro, e eu possa ter acesso e utilizar suas classes a partir de outro JAR?

    Valeu a força!!!



    coloca o .jar no classpath do outro?

    Como você fez pra importar a biblioteca do JDBC? é o mesmo procedimento.
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    Os JARs (Cadastros) que pretendo adicionar ao meu projeto ficarão na pasta lib junto com o Driver JDBC??????




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    rolipam78
    Os JARs (Cadastros) que pretendo adicionar ao meu projeto ficarão na pasta lib junto com o Driver JDBC??????



    sim
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. rolipam78
    Posts:13


    Comment Arrow

    Publicado em: 13/03/2012 00:24:42

    VALEU !!!!! Não imaginei que fosse tão simples assim!!! já olhei diversos Foruns que apresentaram milhares de códigos mirabolantes e um inclusive criando uma THREAD. Só mais um detalhe, o fato das aplicações estarem configuradas como setDefaultCloseOperation (EXIT_ON_CLOSE) fechará meu programa principal caso alguma tela secundária seja fechada? Devo alterar a propriedade para DISPOSE ou HIDEN?

    Acho que isso finaliza o tópico!!!!

    Muito obrigado MESMO!!!!




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 13/03/2012 00:28:18

    rolipam78
    VALEU !!!!! Não imaginei que fosse tão simples assim!!! já olhei diversos Foruns que apresentaram milhares de códigos mirabolantes e um inclusive criando uma THREAD. Só mais um detalhe, o fato das aplicações estarem configuradas como setDefaultCloseOperation (EXIT_ON_CLOSE) fechará meu programa principal caso alguma tela secundária seja fechada? Devo alterar a propriedade para DISPOSE ou HIDEN?

    Acho que isso finaliza o tópico!!!!

    Muito obrigado MESMO!!!!



    Sim sim, EXIT_ON_CLOSE vai terminar a aplicação toda.
    Quando se tem várias JFrames na aplicação, geralmente elas deviam ficar com DISPOSE_ON_CLOSE e só a principal com EXIT_ON_CLOSE
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 13/03/2012 07:44:19

    sekkuar
    rolipam78

    [...]



    Sim sim, EXIT_ON_CLOSE vai terminar a aplicação toda.
    Quando se tem várias JFrames na aplicação, geralmente elas deviam ficar com DISPOSE_ON_CLOSE e só a principal com EXIT_ON_CLOSE



    assassino de JVM!

    Eu nunca uso, e aconselho a não usar o EXIT_ON_CLOSE - ele mata a JVM sem levar em conta o que estiver rodando.

    Sem usar o EXIT_ON_CLOSE, se todas as janelas forem fechadas e não tiver nenhuma Thread (não-daemon) rodando, a JVM irá fechar NORMALMENTE, eventualmente executando qualquer código necessário para finalizar corretamente a aplicação.
    Em aplicações muito pequenas isso não tem importância, mas na hora que fizer algo um pouco maior, pode fazer uma diferença brutal!
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. ryuuji
    Posts:1116


    Comment Arrow

    Publicado em: 13/03/2012 09:29:21

    simu
    sekkuar
    rolipam78

    [...]



    Sim sim, EXIT_ON_CLOSE vai terminar a aplicação toda.
    Quando se tem várias JFrames na aplicação, geralmente elas deviam ficar com DISPOSE_ON_CLOSE e só a principal com EXIT_ON_CLOSE



    assassino de JVM!

    Eu nunca uso, e aconselho a não usar o EXIT_ON_CLOSE - ele mata a JVM sem levar em conta o que estiver rodando.

    Sem usar o EXIT_ON_CLOSE, se todas as janelas forem fechadas e não tiver nenhuma Thread (não-daemon) rodando, a JVM irá fechar NORMALMENTE, eventualmente executando qualquer código necessário para finalizar corretamente a aplicação.
    Em aplicações muito pequenas isso não tem importância, mas na hora que fizer algo um pouco maior, pode fazer uma diferença brutal!



    Exato.

    Aplicações com várias Threads ou com serviço pesado de "background" normalmente tem problemas com o "EXIT_ON_CLOSE".

    Eu mesmo aprendi isso da pior forma possível. xD
    _________________
    Ryuuji
    "The mod javafree deserves, but not the one it needs right now."




  1. rolipam
    Posts:9


    Comment Arrow

    Publicado em: 13/03/2012 12:49:06

    PERAÍ... Como posso finalizar uma aplicação (Tela Principal) então? O HIDEN só esconde a tela mas não encerra a JVM e portanto continua consumindo CPU e Memória. O Dispose (destroi o objeto ativo) já é utilizado para encerrar as telas secundárias do programa sem fechar o programa principal e o EXIT_ON_CLOSE é "Assassino de JVM". Existe um momento em que o programa principal precisará ser encerrado, como por exemplo no final de expediente, antes de desligar o computador. Nesse caso o que vc sugere???




  1. ryuuji
    Posts:1116


    Comment Arrow

    Publicado em: 13/03/2012 09:29:21

    rolipam
    PERAÍ... Como posso finalizar uma aplicação (Tela Principal) então? O HIDEN só esconde a tela mas não encerra a JVM e portanto continua consumindo CPU e Memória. O Dispose (destroi o objeto ativo) já é utilizado para encerrar as telas secundárias do programa sem fechar o programa principal e o EXIT_ON_CLOSE é "Assassino de JVM". Existe um momento em que o programa principal precisará ser encerrado, como por exemplo no final de expediente, antes de desligar o computador. Nesse caso o que vc sugere???



    Se você der DISPOSE em todas as janelas da aplicação (e não houver nenhuma Thread sendo executada) a JVM encerra sozinha, ou seja, fecha sua aplicação.
    _________________
    Ryuuji
    "The mod javafree deserves, but not the one it needs right now."




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 13/03/2012 07:44:19

    rolipam
    PERAÍ... Como posso finalizar uma aplicação (Tela Principal) então? O HIDEN só esconde a tela mas não encerra a JVM e portanto continua consumindo CPU e Memória. O Dispose (destroi o objeto ativo) já é utilizado para encerrar as telas secundárias do programa sem fechar o programa principal e o EXIT_ON_CLOSE é "Assassino de JVM". Existe um momento em que o programa principal precisará ser encerrado, como por exemplo no final de expediente, antes de desligar o computador. Nesse caso o que vc sugere???



    PERAÍ você - já tinha respondido:

    simu

    [...]

    Sem usar o EXIT_ON_CLOSE,
    se todas as janelas forem fechadas
    e não tiver nenhuma Thread (não-daemon) rodando,
    a JVM irá fechar NORMALMENTE

    [...]



    OK, na verdade é suficiente que nenhuma Thread não-daemon esteja rodando... (uma janela aberta implica em Threads da GUI ativas)

    mas se estiver rodando uma Thread que não foi definida como sendo daemon, a JVM não irá terminar.
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.




  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Básico