Coordenadas de botões em Java :S

eastern

Power Member
Boas,

Estava para aqui a inventar um teclado em java, mas não consigo acabar...
Estava a usar o "BorderLayout" com as coordenadas North (tecla 2) South (tecla 8) East (tecla 4) e West (tecla 6),e tb o Center (tecla 5) mas queria fazer um teclado com 9 teclas. O problema é que não sei como posicionar as teclas restantes..( as outras coordenadas não funcionam :p) (1, 3, 7 e 9). ya, tb vai ter k ter um 0 (zero) lol...

Alguém sabe como fazer? Desculpem lá mas eu sou mesmo tenrrinho nesta linguagem, eh eh :D

Código:
import java.awt.*; 
import java.applet.Applet; 
 
public class teclado extends Applet
{ 
 
Button botão1, botão2, botão3, botão4, botão5, botão6, botão7, botão8, botão9, botão0; 
  
 public void init()
 { 
  setLayout(new BorderLayout()); 
  botão1 = new Button("1"); 
  botão2 = new Button("2"); 
  botão3 = new Button("3");
  botão4 = new Button("4"); 
  botão5 = new Button("5"); 
  botão6 = new Button("6");
  botão7 = new Button("7");
  botão8 = new Button("8");
  botão9 = new Button("9");
  botão0 = new Button("0");
  
  add("???",botão1); 
  add("North",botão2); 
  add("???",botão3);
  add("West",botão4); 
  add("Center",botão5); 
  add("East",botão6);
  add("???",botão7);
  add("South",botão8);
  add("???",botão9);
  add("???",botão0);
 }
}

Se retirat os adds e os botões dos numeros "a mais" a coisa funciona, mas só com o 2, 4, 5, 6 e 8 ..

Cumps_
 
boas, em vez de usares o BorderLayout usa o GridLayout, torna-se mais simples para o que tu queres, defines o numero de colunas e o numero de linhas, neste caso 3x3 e já não será necessário o zero.

Código:
setLayout(new GridLayout(3,3));
botão1 = new Button("1"); 
botão2 = new Button("2"); 
botão3 = new Button("3");
botão4 = new Button("4"); 
botão5 = new Button("5"); 
botão6 = new Button("6");
botão7 = new Button("7");
botão8 = new Button("8");
botão9 = new Button("9");

add(botão1);
add(botão2);
add(botão3);
add(botão4);
add(botão5);
add(botão6);
add(botão7);
add(botão8);
add(botão9);

Apenas uma correcção, não uses caracteres especiais de pt, em vez de botão escreve botao, se bem que a maneira mais correcta seria mesmo em ingles button, mas isso já é outra coisa.
Quanto á criação dos botões podes criar recorrendo a uso de um ciclo for em vez de os criares manualmente. Mesmo no controlo de eventos não terás qualquer problema.

Código:
for(int i=1; i <= 9; i++) {
add(new Button(i))
}

No ciclo for geravas então o evento para o botão e depois seria só definir o método, nem seriam necessárias variáveis globais.


Cumprimentos
 
Última edição:
@guilherme,

Desde já muito obrigado pela ajuda. A questão dos nomes em português foi mesmo ocasional visto que estava a usar código de um site brasileiro... deixei como estava e acrescentei os butões que me faltavam. Habitualmente escrevo em PT, mas sem acentos ;)

Agora o problema é que me dá um erro: "cannot find symbol - constructor Button(int)" em: "add(new Button(i));"

:S
 
ups, my mistake, isso deve-se ao facto do construtor da classe Button esperar uma string e o i é um inteiro, mete add(new Button(i + ""));

ou add(new Button(Integer.toString(i)));

cumprimentos
 
ups, my mistake, isso deve-se ao facto do construtor da classe Button esperar uma string e o i é um inteiro, mete add(new Button(i + ""));

ou add(new Button(Integer.toString(i)));

cumprimentos

Muito obrigado :) já funciona direito ;)
Tive só de mudar o 9 do "for" para 0 e acrescentei esse botão. Tb alterei o GridLayout para (4,3). Era mesmo isto que precisava :)

Mais uma vez obrigado.

Cumps_
 
Back
Topo