1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Projecto Java - Ajuda no desenvolvimento da GUI

Discussão em 'Programação' iniciada por Arroz_d_Pato, 4 de Junho de 2009. (Respostas: 9; Visualizações: 1020)

  1. Boas noites,

    estou a implementar o jogo do UNO em Java para um projecto da faculdade e neste momento estou com um problema que não estou a conseguir ultrapassar. Venho pedir então o vosso auxílio!

    O meu problema é então o seguinte:
    Em primeiro lugar, fiz a GUI usando as ferramentas de construção de GUIs do NetBeans 6.5. A GUI para o programa tem vários jTextFields que pretendo ir actualizando no decorrer do programa. E isso é o que não consigo devido a um erro que não percebo...

    Classe da GUI: UnoUI.java
    Dentro da classe tenho lá esta função para modificar a caixa de texto jHuman_Name:
    [​IMG]

    Até aqui tudo bem, mas quando tento utilizar a função no decorrer do problema aparece isto:
    Classe: Game.java
    [​IMG]

    Alguém me pode apontar o que estou a fazer errado?

    Obrigado desde já pela vossa ajuda.

    P.S.: Estão aqui as classes acima se preferirem ver o código todo:
    Classe UnoUI.java: http://dl.getdropbox.com/u/967188/UnoUI.class
    Classe Game.java: http://dl.getdropbox.com/u/967188/Game.class
     
  2. Baderous

    Baderous Banido

    Se definiste o método (e não "função"), então tens de o invocar, com o parâmetro "Joaquim".
     
  3. Epá já dei tantas voltas aquilo que acabei por colocar mal a imagem no tópico. Já fiz o que disseste mas o problema mantem-se:
    [​IMG]
     
    Última edição: 4 de Junho de 2009
  4. Baderous

    Baderous Banido

    Penso que o erro se deve ao facto de estares a invocar o método de instância como se fosse um método de classe. Tens de criar uma instância dessa classe e sobre ela invocar esse método.
     
  5. Mas como posso fazer uma instância da classe UnoUI se ela contém o método main?
     
  6. Baderous

    Baderous Banido

    Isso não quer dizer nada. O método main é um método, não é por existir que interfere, simplesmente é o método por onde a computação começa,

    Código:
    UnoUI uno = new UnoUI();
     
  7. piaf

    piaf Power Member

    Nota: isto nomalmente não é boa programação e deve ser evitado. Mas será uma forma simples de contornares o problema.

    ficheiro UnoUI.java:
    Código:
    static UnoUI myUNO
    
    publc static void main (String[] args) {
    myUNO = new UNOUI();
    ...
    }
    
    public static UnoUI getUnoUI() {
    return myUNO;
    }
    
    

    chamada ao teu metodo (a partir de qualquer classe)

    UnoUI.getUnoUI().setName("Joaquim");


    Isto implica que apenas tens uma unica instancia do UnoUI "partilhada" por toda a tua aplicação.
     
    Última edição pelo moderador: 6 de Junho de 2009
  8. Baderous

    Baderous Banido

    O que acabaste de descrever é o Padrão Singleton.
     
  9. K0mA

    K0mA Power Member

    [​IMG]

    Este problema acontece porque o método set_jhuman_name não foi declarado como estático.
    Há duas soluções:


    1. Ou declaras o método como static dentro da classe, o que vai permitir executar o método sem criar uma instância da classe.
    2. Sem declarar o método como static, crias uma instância da classe: instancia = new UNOUI(); e agora podes fazer instancia.set_jhuman_name("nome");
    O Padrão Singleton que foi referido pelo Baderous serve para apenas permitir uma instância da classe, ie não permite dois objectos ao mesmo tempo.
    Espero ter sido útil.
    PS: Não percebo nada de JAVA
     
  10. arkannis

    arkannis Power Member

    Exactamente, e ao contrario do que o piaf disse, isto não é má programação. A utilização deste padrão não tem nada de errado, e quando se quer uma classe em que apenas se quer ter uma instancia da mesma, essa é uma forma correcta de fazer as coisas.
    E já agora, por uma questão de coerencia com os padroes, o nome do metodo que devolve a instancia deve-se chamar getInstance().
     

Partilhar esta Página