Página Inicial do Fórum > GUI - (Applets, Swing, SWT, etc)

Como fechar um JFrame através de um JPanel



Criar novo tópico   Responder tópico


  1. BrunoLB
    Posts:6


    Comment Arrow

    Publicado em: 23/12/2011 16:00:36

    Olá, Estou criando uma aplicação onde o JFrame Principal contem um JTabbedPane onde cada aba desse JTabbedPane é adicionado JPanels.
    O meu problema é o seguinte, como faço pra ter um botão em um desses JPanels adicionados que irá fechar o JFrame principal ???
    Ja tentei utilizar os comandos .dispose() e .setVisible(false) eles não funcionão pq eu estou dentro do JPanel então ele não reconhece o JFrame para assim fecha-lo.



  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 23/12/2011 16:07:24


    (IDE Netbeans foi usada e ferida na elaboração deste código que foi testado e está funcionando)
    _________________
    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. BrunoLB
    Posts:6


    Comment Arrow

    Publicado em: 23/12/2011 16:00:36

    Funcionou perfeitamente, soh que me ocasionou um novo problema.
    Este mesmo botão localizado no JPanel abria um novo JFrame e esse novo JFrame consequentemente abria novamente o JFrame onde esta o JPanel em questao.
    O problema agora é o JFrame do JPanel esta fechando com o codigo que voce me passou, mais agora o codigo que tinha inserido no outro JFrame para abri-lo nao esta funcionando.



  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 23/12/2011 16:07:24

    você precisa abrir a JFrame nova ANTES de fechar a anterior
    _________________
    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:9417


    Comment Arrow

    Publicado em: 23/12/2011 16:36:12

    sekkuar

    (IDE Netbeans foi usada e ferida na elaboração deste código que foi testado e está funcionando)



    sou pelo boicote desse código - onde já se viu sacrificar uma pobre IDE só para fazer testes do código!


    mas só porque existe um método getRoot (quase mesma coisa que acima): [:-)
                        (não testado - nenhuma IDE foi ferida ou usada durante a produção e teste desse código)

    [[]]
    _________________
      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. BrunoLB
    Posts:6


    Comment Arrow

    Publicado em: 23/12/2011 16:00:36

    consegui resolver mais de uma forma diferente,
    ao invés de eu criar um estancia da classe através do codigo:

    new JFrame().setVisible(true);

    eu chamei o metodo principal da classe substitui essa linha de codigo:

    JFrame.main(null);

    Não sei se isso é muito indicado, mais resolveu meu problema



  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 23/12/2011 16:07:24

    simu
    sekkuar
    [...]



    sou pelo boicote desse código - onde já se viu sacrificar um pobre IDE só para fazer testes do código!


    mas só porque existe um método getRoot (quase mesma coisa que acima): [:-)
                        (não testado - nenhuma IDE foi ferida ou usada durante a produção e teste desse código)

    [[]]



    Não foi sacrificado, só foi seriamente ferido.
    Mas eu prefiro fazer do meu jeito, economiza verificações


    Já que ele já sabe que é um JFrame mesmo
    _________________
    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. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 23/12/2011 16:07:24

    BrunoLB
    consegui resolver mais de uma forma diferente,
    ao invés de eu criar um estancia da classe através do codigo:

    new JFrame().setVisible(true);

    eu chamei o metodo principal da classe substitui essa linha de codigo:

    JFrame.main(null);

    Não sei se isso é muito indicado, mais resolveu meu problema



    Mas JFrame não tem método main.........
    _________________
    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. BrunoLB
    Posts:6


    Comment Arrow

    Publicado em: 23/12/2011 16:00:36

    Eu estou usando a IDE netbeans ela mesma cria um metodo main pro JFrame... eu soh fiz algumas modificações.
    Ele possui sim !!!



  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 23/12/2011 16:07:24

    BrunoLB
    Eu estou usando a IDE netbeans ela mesma cria um metodo main pro JFrame... eu soh fiz algumas modificações.
    Ele possui sim !!!



    Esse sim sacrificou a IDE... eu só machuquei um pouquinho
    _________________
    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. BrunoLB
    Posts:6


    Comment Arrow

    Publicado em: 23/12/2011 16:00:36

    kkkkkkkkkkkk... Quem cria o codigo é a propria IDE.
    Disso eu não tenho culpa.



  1. staroski
    Posts:4038


    Comment Arrow

    Publicado em: 23/12/2011 16:48:11

    BrunoLB
    Eu estou usando a IDE netbeans ela mesma cria um metodo main pro JFrame... eu soh fiz algumas modificações.
    Ele possui sim !!!


    Não meu amigo, a classe javax.swing.JFrame não possui método main.
    E o NetBeans não altera o fonte de classes do JDK.

    Provavelmente você está invocando o método main de uma classe sua que extende JFrame.

    Dica:
    Instancia e Estancia são coisas completamente diferentes...
    _________________
    Ricardo Artur Staroski, OCP-JP
    Blumenau - SC
    http://www.staroski.com.br



  1. BrunoLB
    Posts:6


    Comment Arrow

    Publicado em: 23/12/2011 16:00:36

    Desculpa sou muito leigo em java.
    Mais é isto mesmo que o staroski disse, desculpa o mau entedido.
    Eu criei uma classe que extende o JFrame e por isso ela possui um metodo main.



  1. markame
    Posts:1


    Comment Arrow

    Publicado em: 17/05/2013 23:18:03

    Cara me explica o funcionamento desse codigo cara desde ja agradecido





    sekkuar

    (IDE Netbeans foi usada e ferida na elaboração deste código que foi testado e está funcionando)



  1. ElPsyCongroo
    Posts:1688


    Comment Arrow

    Publicado em: 19/05/2013 20:32:22



    A idéia é buscar o JFrame em toda a hierarquia de parents do JPanel, e ao encontrar, fechá-lo.

    A outra opção sugerida no post é usar:

    http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html#getRoot%28java.awt.Component%29

    _________________
    Programador Java

    I´m a mad scientist.

    Tag CODE:
    http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html



  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> GUI - (Applets, Swing, SWT, etc)