Projecto Java - Ajuda no desenvolvimento da GUI

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:
Uno%20-%201.jpg


Até aqui tudo bem, mas quando tento utilizar a função no decorrer do problema aparece isto:
Classe: Game.java
Uno%20-%202a.jpg


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
 
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:
Uno%20-%203.jpg
 
Última edição:
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.
 
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();
 
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:
Nota: isto nomalmente não é boa programação e deve ser evitado. Mas será uma forma simples de contornares o problema.

ficheiro UnoUI.java:
-------
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.
O que acabaste de descrever é o Padrão Singleton.
 
Uno%20-%203.jpg


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
 
O que acabaste de descrever é o Padrão Singleton.

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().
 
Back
Topo