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

Coordenadas de botões em Java :S

Discussão em 'Programação' iniciada por eastern, 22 de Dezembro de 2008. (Respostas: 4; Visualizações: 1045)

  1. eastern

    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_
     
  2. guilherme

    guilherme Power Member

    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: 23 de Dezembro de 2008
  3. eastern

    eastern Power Member

    @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
     
  4. guilherme

    guilherme Power Member

    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
     
  5. eastern

    eastern Power Member

    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_
     

Partilhar esta Página