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

Dúvida com JComboBox e ItemListener



Criar novo tópico   Responder tópico
  1. Comment Arrow

    Publicado em: 14/04/2011 10:50:37

    Bom dia pessoal.

    É o seguinte, fiz aquele joguinho do Einstein em java.
    Ultilizando o ItemListener para acionar um evento, tenho o seguinte código:


    E mais 3 outros JComboBox.

    Minha dúvida é: tem como "enxugar" mais o código?
    Tipo, vemos que o ItemListener é igual para todos, dá pra botar em um metodo para quando for adicionar no JComboBox ele seja acionado? ou algo parecido?

    espero que dê pra entender

    PS: dono e bebida são JComboBox




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 14/04/2011 12:01:24

    fabricioluna
    Bom dia pessoal.

    É o seguinte, fiz aquele joguinho do Einstein em java.
    Ultilizando o ItemListener para acionar um evento, tenho o seguinte código:


    E mais 3 outros JComboBox.

    Minha dúvida é: tem como "enxugar" mais o código?
    Tipo, vemos que o ItemListener é igual para todos, dá pra botar em um metodo para quando for adicionar no JComboBox ele seja acionado? ou algo parecido?

    espero que dê pra entender

    PS: dono e bebida são JComboBox



    O Listener é um simples objeto - use apenas uma instância dele com uma variável.
    Mais ou menos assim (ignorei os [x]):


    [[]]
    _________________
      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. simu
    Posts:9416


    Comment Arrow

    Publicado em: 14/04/2011 12:01:24

    acabei esquecendo outra possibilidade (que não é minha preferida):
    faz a classe onde tem esse código implementar o listener:

    [[]]

    _________________
      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. Comment Arrow

    Publicado em: 14/04/2011 10:50:37

    Brigadãaaaoo!!
    Resolveu direitinho!

    agora tenho outra dúvida:

    Dependendo da escolha, mudará a cor do painel em que o JComboBox foi inserido.

    Gostaria de saber se dá pra fazer a mesma coisa que foi feita no código que postei no inicio?

    Tenho esse código:



    Estou tentando fazer um Array com 5 posições;
    Dá pra diminuir o código como o de cima?

    Tentei fazer assim:


    dá erro nessa linha:


    Mais uma vez.. brigadão pela força!


  1. Comment Arrow

    Publicado em: 14/04/2011 10:50:37

    Eu deveria criar um novo tópico para essa dúvida ou posso usar esse mesmo?




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 14/04/2011 12:01:24

    fabricioluna
    Brigadãaaaoo!!
    Resolveu direitinho!

    agora tenho outra dúvida:

    Dependendo da escolha, mudará a cor do painel em que o JComboBox foi inserido.

    Gostaria de saber se dá pra fazer a mesma coisa que foi feita no código que postei no inicio?

    Tenho esse código:

    [...]

    Tentei fazer assim:


    dá erro nessa linha:


    Mais uma vez.. brigadão pela força!


    sem saber qual o erro vamos ter que adivinhar... um pouco...
    (a mensagem do erro deve dar detalhes para ajudar a identificar o problema)

    mas desconfio que deve ser algo em relação a "x" ou outra variável não ser final. Esse problema é um pouco mais complicado - sempre ocorre quando criamos uma classe anônima (interna) que usa uma variável local.

    No fundo o compilador não sabe qual o valor da variável (x) que deve ser usado: o valor de quando o listener foi criado, o valor atual quando o listener for executado; e, principalmente, o que fazer se o valor for alterado dentro da classe interna.

    Solução (meio estranha):

    [[]]
    PS: provavelmente só falta de capricho:

    fabricioluna

    Tentei fazer assim:


    é "for" e não "if"...
    _________________
      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. Comment Arrow

    Publicado em: 14/04/2011 10:50:37

    Ráááá!!
    simplesmente PERFEITO.

    Muito obrigado mesmo!

    então.. quando a gente quer usar um atributo dentro de um listener, tem que colocar "final", entendi?

    Quando terminei o joguinho tinha 21kb

    Quando ajeitei ele, fiz com Array, e usei as dicas que peguei aqui, diminui ele pra 5Kb

    Brigadão!




  1. simu
    Posts:9416


    Comment Arrow

    Publicado em: 14/04/2011 12:01:24

    de nada, estamos aqui para ajudar...

    fabricioluna

    então.. quando a gente quer usar um atributo dentro de um listener, tem que colocar "final", entendi?


    o problema é uma variável local e qualquer classe interna, não somento um listener (apesar de ser o caso mais comum).
    Um campo (variável de instâncio ou classe) não tem esse problema.
    [[]]
    _________________
      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. Comment Arrow

    Publicado em: 14/04/2011 10:50:37

    Aahhh
    Entendi!

    Obrigado pela força!




  1. Relacionados





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