Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o diâmetro, a circunferência e a área de um círculo dado o raio em Java - Java para Geometria

Quantidade de visualizações: 2404 vezes
O círculo é uma figura geométrica plana e que possui quatro características: seu raio, seu diâmetro, sua circunferência e sua área. Aqui já podemos aproveitar e relembrar a diferença entre o círculo e a circunferência. O círculo é o conjunto de pontos resultantes da união entre uma circunferência e seus pontos internos, ou seja, o círculo é a área cuja delimitação é uma circunferência.

É importante observar que alguns autores tratam o círculo como uma circunferência. Assim, para estes autores, calcular a circunferência de um círculo equivale a calcular o perímetro da circunferência.

Veja a figura a seguir para relembrar o que é o raio de um círculo:



Nesta dica mostrarei como podemos usar Java para calcular o diâmetro, a circunferência e a área de um círculo tendo apenas o raio como informação. Antes, porém, vamos às formulas. Sabendo que r é o raio, temos:

\[\text{Diâmetro d} = 2 \times r \]

\[\text{Circunferência C} = 2 \times \pi \times r \]

\[\text{Área A} = \pi \times r^2 \]

Agora vamos ver o código Java que solicita ao usuário que informe o raio do círculo e mostra o diâmetro, a circunferência e a área:

package arquivodecodigos;

import java.util.Scanner;

public class Estudos{
  public static void main(String[] args){
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler o raio do círculo
    System.out.print("Informe o raio do círculo: ");
    double raio = Double.parseDouble(entrada.nextLine());
    
    // vamos achar o diâmetro do círculo
    double diametro = 2 * raio;
    // agora calculamos a circunferência
    double circunferencia = 2 * Math.PI * raio;
    // finalmente calculamos a área do círculo
    double area = Math.PI * Math.pow(raio, 2);
    
    // vamos mostrar os resultados
    System.out.println("O diâmetro do círculo é: " +
      diametro);
    System.out.println("A circunferência do círculo é: " +
      circunferencia);
    System.out.println("A área do círculo é: " + area);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Informe o raio do círculo: 10
O diâmetro do círculo é: 20.0
A circunferência do círculo é: 62.83185307179586
A área do círculo é: 314.1592653589793

Lembre-se de que a área é em centímetros quadrados, metros quadrados, etc.


jQuery ::: Dicas & Truques ::: AJAX

Apostila jQuery para iniciantes - Como fazer requisições assíncronas usando o método ajax() do jQuery

Quantidade de visualizações: 19173 vezes
O jQuery fornece formas bem simples de se fazer requisições assíncronas usando AJAX. Uma destas formas é o método ajax(). Este método possui quase uma dezena de parâmetros adicionais e retorna um objeto XMLHttpRequest, que pode ser usado para fins de encadeamento ou cancelamento da requisição HTTP.

Enquanto outras dicas cobrem todos os parâmetros deste método, aqui nos concentraremos apenas em escrever um exemplo completo de seu uso. Trata-se de uma aplicação que fará uma solicitação HTTP POST a um código PHP que retornará um arquivo XML com alguns valores.

Vamos começar analisando o codigo PHP:

<?
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: text/xml");

$nome = utf8_decode($_POST["nome"]);
$cidade = utf8_decode($_POST["cidade"]);
$estado = utf8_decode($_POST["estado"]);

echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
echo "<pessoas>\n";
echo "  <pessoa>\n";
echo "    <nome>" . $nome . "</nome>\n";
echo "    <cidade>" . $cidade . "</cidade>\n";
echo "    <estado>" . $estado . "</estado>\n";
echo "  </pessoa>\n";
echo "</pessoas>";
?>

Salve este código PHP como pesquisa.php. Tudo que ele faz é receber alguns parâmetros POST e usá-los para montar um arquivo XML. Em um determinado momento, o arquivo XML retornado poderá ser algo como:

<?xml version="1.0" encoding="iso-8859-1"?>
<pessoas>
 <pessoa>
  <nome>OSMAR J. SILVA</nome>
  <cidade>GOIÂNIA</cidade>
  <estado>GO</estado>
 </pessoa>
</pessoas>

Fique de olho na estrutura deste arquivo XML enquanto progredimos. Veja agora uma página HTML completa que mostra como usar o método ajax() para se conectar a este código PHP e obter os dados gerados em forma de XML:

<html>
<head><title>Estudos jQuery</title>
<meta http-equiv="Content-Type" content="text/html; 
charset=iso-8859-1">

<!-- Importa a biblioteca jQuery -->
<script src="jquery.js" type="text/javascript"></script>

<script type="text/javascript">
  function carregarDados(){
    var dados = {'nome': "Osmar J. Silva",
	         'cidade': "Goiânia",
		 'estado': "GO"}
	
    $.ajax({
      url: 'pesquisar.php',
      type: 'post',
      dataType: 'xml',
      data: dados,
      success: function(data){
        $(data).find('pessoa').each(function(){
          var nome = $(this).find('nome').text();
	  var cidade = $(this).find('cidade').text();
	  var estado = $(this).find('estado').text();
	  $("#parag").html("Nome: " + nome + "<br>");
	  $("#parag").append("Cidade: " + cidade + "<br>");
	  $("#parag").append("Estado: " + estado);
	});	
      },
      error: function(XMLHttpRequest, textStatus, 
                      errorThrown){
        window.alert('Houve um erro!');
      }
    });
  }
</script>

</head>
<body>

<button onclick="carregarDados()">Carregar dados
</button>

<p id="parag"></p>

</body>
</html>

Veja como usamos os métodos find() e each() para acessar e percorrer os elementos XML. Estes métodos são encontrados na seção de métodos para percorrer o HTML DOM e o XML DOM. Para finalizar lembre-se de que o método ajax() retorna um objeto XMLHttpRequest.


Python ::: Dicas & Truques ::: Strings e Caracteres

Como verificar se uma string é composta apenas de caracteres maiúsculos usando a função isupper() do Python

Quantidade de visualizações: 9206 vezes
Este exemplo mostra como usar a função isupper() do objeto string da linguagem Python para verificar se uma palavra, frase ou texto contém apenas caracteres maiúsculos. Se qualquer caractere minúsculo for encontrado, a função retorna false.

Obs: Mesmo que a string contenha números ela ainda pode estar em letras maiúsculas.

Veja um código Python completo exemplificando seu uso:

def main():
  string = "GOSTO DE PYTHON E JAVA"

  if string.isupper():
    print("A string está em letras maiúsculas")
  else:
    print("A string não está em letras maiúsculas")

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

A string está em letras maiúsculas


VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: VisuAlg Básico

Exercícios Resolvidos de VisuAlg - Quantidade de patas dos animais de uma fazenda - O desafio da fazenda em VisuAlg

Quantidade de visualizações: 420 vezes
Pergunta/Tarefa:

Para este exercício você foi contratado(a) para informar a quantidade total de patas dos animais de uma fazenda. O fazendeiro cria três espécies de animais:

Galinhas = 2 patas
Vacas = 4 patas
Porcos = 4 patas

O funcionário responsável pela fazenda contou os animais e forneceu a você a quantidade de animais de cada espécie (galinhas, vacas e porcos). Sua tarefa é retornar o número total de patas de todos os animais da fazenda.

Sua saída deve ser parecida com:

Informe a quantidade de galinhas: 8
Informe a quantidade de vacas: 3
Informe a quantidade de porcos: 11
Quantidade de animais: 22
Quantidade de patas: 72
Resposta/Solução:

Veja a resolução comentada deste exercício usando VisuAlg:

algoritmo "Desafio da fazenda em VisuAlg"

var
  // variáveis usadas na resolução do problema
  quant_galinhas, quant_vacas, quant_porcos: inteiro
  quant_total_animais, quant_patas_total: inteiro
  
inicio
  // vamos ler a quantidade de cada animal
  escreva("Informe a quantidade de galinhas: ")
  leia(quant_galinhas)
  escreva("Informe a quantidade de vacas: ")
  leia(quant_vacas)
  escreva("Informe a quantidade de porcos: ")
  leia(quant_porcos)

  // vamos calcular a quantidade de animais
  quant_total_animais <- quant_galinhas + quant_vacas + quant_porcos
  escreval("Quantidade de animais: ", quant_total_animais)

  // vamos calcular a quantidade de patas
  quant_patas_total <- quant_galinhas * 2
  quant_patas_total <- quant_patas_total + (quant_vacas * 4)
  quant_patas_total <- quant_patas_total + (quant_porcos * 4)
  escreval("Quantidade de patas: ", quant_patas_total)

fimalgoritmo



VisuAlg ::: Dicas & Truques ::: Matemática e Estatística

Como calcular porcentagem em VisuAlg - Como efetuar cálculos de porcentagem em VisuAlg

Quantidade de visualizações: 2546 vezes
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em VisuAlg.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor, percentual, valor_final: real

inicio
  valor <- 178.00 // valor original
  percentual <- 15.0 / 100.0 // 15%
  valor_final <- valor + (percentual * valor)

  // mostra o resultado
  escreva("O valor final do produto é: ", valor_final)

  // O resultado será 204,70

fimalgoritmo

Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor, percentual, valor_final: real

inicio
  valor <- 250.00; // valor original
  percentual <- 8.0 / 100.0 // 8%
  valor_final <- valor - (percentual * valor)

  // mostra o resultado
  escreva("O valor final do produto é: ", valor_final)

  // O resultado será 230,00

fimalgoritmo

Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  perguntas, acertos: real

inicio
  perguntas <- 90.0
  acertos <- 72.0

  // mostra a porcentagem de acertos
  escreva("Porcentagem de acertos: ")
  escreval(((acertos / perguntas) * 100), "%")

  // mostra a porcentagem de erros
  escreva("Porcentagem de erros: ")
  escreval((((perguntas - acertos) / perguntas) * 100), "%")

  // Os resultados serão 80% e 20%

fimalgoritmo

Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor_anterior, novo_valor, porcentagem_lucro: real

inicio
  valor_anterior <- 300.0 // valor anterior
  novo_valor <- 340.0 // valor novo

  // calcula a porcentagem de lucro
  // efetua o cálculo
  porcentagem_lucro <- ((novo_valor * 100) / valor_anterior) - 100

  escreva("A porcentagem de lucro foi de: ", porcentagem_lucro, "%")

  // O resultado será 13,33

fimalgoritmo

Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor, percentual, comissao: real

inicio
  valor <- 70.0 // valor do produto
  percentual <- 5.0 / 100.0 // 5%

  // calcula a comissão
  comissao <- percentual * valor

  // mostra o resultado
  escreva("O valor repassado ao vendedor é: ", comissao)

  // O resultado será 3,5

fimalgoritmo



Revit C# ::: Dicas & Truques ::: Colunas e Pilares

Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# API

Quantidade de visualizações: 386 vezes
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação.

Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos.

O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit.

De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar.

O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação.

Veja o código Revit C# API completo para o exemplo:

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
using System.Linq;
 
namespace Estudos {
  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
    TransactionMode.Manual)]
  [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
  public partial class ThisApplication {
    private void Module_Startup(object sender, EventArgs e) {
      // vamos obter uma referência ao Document ativo
      Document doc = this.ActiveUIDocument.Document;
      UIDocument uidoc = this.ActiveUIDocument; 
      
      // agora mostramos uma mensagem para o usuário selecionar uma
      // coluna ou pilar
      TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar");
        
      // obtemos uma referência ao objeto Selection do
      // UIDocument ativo
      Selection selecao = uidoc.Selection;
      
      // e finalmente esperamos que o usuário selecione o elemento
      Reference selecionado = selecao.PickObject(ObjectType.Element,
        "Selecione uma coluna ou pilar");
      
      // agora testamos se o usuário realmente selecionou um
      // elemento
      if (selecionado != null) {
        // vamos obter o elemento selecionado a partir da
        // referência
        FamilyInstance coluna = uidoc.Document.GetElement(selecionado) 
          as FamilyInstance;
        // vamos obter o elemento BoundingBoxXYZ
        BoundingBoxXYZ bounding = coluna.get_BoundingBox(null);
         
        // vamos obter as informações da BoundingBoxXYZ
        // primeiro o ponto mínimo (canto esquerdo inferior e
        // a parte de trás da caixa delimitadora)
        XYZ pontoMinimo = bounding.Min;
        // agora o ponto máximo (canto direito superior e
        // a parte da frente da caixa delimitadora)
        XYZ pontoMaximo = bounding.Max;
        
        // agora obtemos o ponto central da coluna         
        XYZ centro = (pontoMaximo + pontoMinimo) * 0.5;
        // construímos a linha que servirá de eixo de rotação
        Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ);
        // definimos o ângulo de rotação em graus        
        double angulo_rotacao_graus = 45;
        // convertemos para radianos
        double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180);        
        
        // iniciamos a transação
        Transaction transacao = new Transaction(doc);
        transacao.Start("Como rotacionar colunas e pilares no Revit");
        
        // rotacionamos a coluna ou pilar
        ElementTransformUtils.RotateElement(doc, coluna.Id, eixos,
          angulo_rotacao_radianos);
        
        // fazemos o commit da transação
        transacao.Commit();      
     
        // e mostramos o resultado
        TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso.");
      }
    }
      
    private void Module_Shutdown(object sender, EventArgs e) {
      // para fazer alguma limpeza de memória ou algo assim
    }
 
    #region Revit Macros generated code
    private void InternalStartup() {
      this.Startup += new System.EventHandler(Module_Startup);
      this.Shutdown += new System.EventHandler(Module_Shutdown);
    }
    #endregion
  }
}



JavaScript ::: Fundamentos da Linguagem ::: Estruturas de Controle

Apostila de JavaScript - Como usar o laço for da linguagem JavaScript

Quantidade de visualizações: 8015 vezes
O laço for (também chamado de loop for ou laço para) é usado quando queremos repetir uma instrução ou um conjunto de instruções um determinado número de vezes. Este laço é composto de três partes: inicialização, teste de continuídade e incremento ou decremento da variável de controle. Veja:

for(inicialização; teste; incremento/decremento){
  instrução ou conjunto de instruções
}

Na parte da inicialização nós podemos inicializar a variável a ser usada para controlar a quantidade de repetições do laço. Na parte do teste de continuídade nós avaliamos uma condição boolean (verdadeiro/falso) para determinar se o laço deve ser interrompido ou continuar sua execução. Na parte de incremento/decremento nós incrementamos ou decrementamos o valor da variável de controle.

Veja um trecho de código no qual usamos o laço for para contar de 0 até 10:

<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>

<script type="text/javascript">
  for(var i = 0; i <= 10;  i++){
    document.write(i + "<br>");
  }  
</script>

</body>
</html>

Este código exibirá o seguinte resultado:

0
1
2
3
4
5
6
7
8
9
10

Veja que a condição de continuídade do laço é o valor da variável i menor ou igual a 10. Eis agora uma modificação deste código que conta de 10 até 0:

<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>

<script type="text/javascript">
  for(var i = 10; i >= 0;  i--){
    document.write(i + "<br>");
  }  
</script>

</body>
</html>

Agora o código exibirá o seguinte resultado:

10
9
8
7
6
5
4
3
2
1
0

Agora que já vimos um exemplo do uso deste laço, é importante saber quando e quantas vezes as três partes de um laço for são executadas:

a) A parte de inicialização é executada apenas uma vez, ou seja, na entrada da estrutura do laço.

b) O teste de continuídade é feito ANTES de cada repetição (iteração) do laço. Se o teste de continuída não resultar satisfatório já na primeira repetição, as instruções contidas no laço não serão executadas e o fluxo do código continuará após sua chave de fechamento.

c) A parte de incremento/decremento da variável de controle é feita DEPOIS de cada repetição do laço.

Com exceção do teste de continuídade, as demais partes de um laço for podem conter mais de uma instrução. Quando isso acontece nós as separamos usando vírgulas. Veja um exemplo:

<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>

<script type="text/javascript">
  for(var i = 0, j = 2; i <= 10;  i++, j = j + 3){
    document.write("i = " + i + "; j = " + j + "<br>");
  }  
</script>

</body>
</html>

Ao executar este código teremos o seguinte resultado:

i = 0; j = 2
i = 1; j = 5
i = 2; j = 8
i = 3; j = 11
i = 4; j = 14
i = 5; j = 17
i = 6; j = 20
i = 7; j = 23
i = 8; j = 26
i = 9; j = 29
i = 10; j = 32

Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6.


JavaScript ::: Dicas & Truques ::: Validação de Formulários

Validação de formulários em JavaScript - Como validar CPF (com pontos e hífen) usando expressões regulares

Quantidade de visualizações: 44473 vezes
Nesta dica mostrarei como podemos escrever uma função JavaScript para a validação de números de CPF, dessa vez usando pontos e o hífen. Isso é interessante porque, muitas vezes, o usuário copia seu CPF de outro lugar e cola nas caixas de texto de nossas aplicações.

A pagina HTML que contém o formulário se parece com a imagem abaixo:



E agora veja o código JavaScript completo para o exemplo, incluindo o código HTML para a página:

<html>
<head>
<title>Estudando JavaScript</title>

<style type="text/css">
  input {margin-bottom: 3px; margin-top: 3px}
</style>
 
<script type="text/javascript">
 function validarCPF(){
   var cpf = document.cadastro.cpf.value;
   var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
   if(!filtro.test(cpf)){
     window.alert("CPF inválido. Tente novamente.");
     return false;
   }
    
   cpf = remove(cpf, ".");
   cpf = remove(cpf, "-");
     
   if(cpf.length != 11 || cpf == "00000000000" || 
      cpf == "11111111111" ||
      cpf == "22222222222" || cpf == "33333333333" || 
      cpf == "44444444444" ||
      cpf == "55555555555" || cpf == "66666666666" || 
      cpf == "77777777777" ||
      cpf == "88888888888" || cpf == "99999999999"){
      window.alert("CPF inválido. Tente novamente.");
      return false;
   }
 
   soma = 0;
   for(i = 0; i < 9; i++){
     soma += parseInt(cpf.charAt(i)) * (10 - i);
   }   

   resto = 11 - (soma % 11);
   
   if(resto == 10 || resto == 11){
     resto = 0;
   }
   
   if(resto != parseInt(cpf.charAt(9))){
     window.alert("CPF inválido. Tente novamente.");
     return false;
   }

   soma = 0;
   for(i = 0; i < 10; i ++){
     soma += parseInt(cpf.charAt(i)) * (11 - i);
   }   

   resto = 11 - (soma % 11);
   if(resto == 10 || resto == 11){
     resto = 0;
   }

   if(resto != parseInt(cpf.charAt(10))){
     window.alert("CPF inválido. Tente novamente.");
     return false;
   }

   window.alert("CPF válido. Muito obrigado."); 
   return true;
 }
  
 function remove(str, sub) {
   i = str.indexOf(sub);
   r = "";
   if (i == -1) return str;
   r += str.substring(0,i) + remove(str.substring(i + sub.length), sub);
   return r;
 }
</script>
 
</head>
<body>
 
<form name="cadastro" onSubmit="return validarCPF()">
  Informe seu CPF (use os pontos e o hífen):<br>
  <input type="text" maxlength="14" name="cpf">
  <input type="submit" value="Enviar!">
</form>
 
</body>
</html>



Java ::: Dicas & Truques ::: Matemática e Estatística

Como converter de binário para decimal usando o método parseInt() da classe Integer da linguagem Java

Quantidade de visualizações: 15878 vezes
Nesta dica eu mostro como podemos usar o método parseInt() da classe Integer do Java para converter um valor binário em um valor decimal. Para isso só precisamos forcecer o valor 2 como segundo argumento para o método parseInt().

Veja o código completo para o exemplo:

package arquivodecodigos;

public class Estudos{
  public static void main(String args[]){
    String binario = "00000110";
     
    // efetua a conversão de binário para
    // decimal
    int decimal = Integer.parseInt(binario, 2);
 
    // exibe o resultado
    System.out.println("O valor binário " + binario + 
      " convertido para decimal é: " + decimal);
 
    System.exit(0);
  }
}

Ao executar este exemplo nós teremos o seguinte resultado:

O valor binário 00000110 convertido para decimal é: 6


Java ::: Pacote java.awt.event ::: KeyEvent

Java Swing - Como obter o caractere da tecla pressionada usando o método getKeyChar() da classe KeyEvent do Java

Quantidade de visualizações: 3151 vezes
Em algumas situações nós precisamos obter o caractere da tecla pressionada em nossas aplicações Java Swing. Para isso podemos usar o método getKeyChar() da classe KeyEvent. Veja sua assinatura:

public char getKeyChar()


O retorno do método é um char representando o caractere associado à tecla "digitada" (pressionada e liberada). Veja um trecho de código no qual temos uma janela JFrame que implementa a interface KeyListener e reage ao evento keyTyped() mostrando a letra digitada:

package estudos;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Janela extends JFrame implements KeyListener{
  public Janela(){
    super("Eventos do Teclado");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
    
    // vamos adicionar o objeto listener 
    addKeyListener(this);

    setSize(350, 250);
    setVisible(true);
  }
    
  @Override
  public void keyPressed(KeyEvent e){
    // sem implementação
  }
    
  @Override
  public void keyReleased(KeyEvent e){
    // sem implementação
  }

  @Override
  public void keyTyped(KeyEvent e){
    // vamos obter o caractere que foi digitado
    char letra = e.getKeyChar();
    // mostra o caractere digitado
    JOptionPane.showMessageDialog(null, "O caractere pressionado foi: " + letra);
  }   
  
  public static void main(String args[]){
    Janela j = new Janela();
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

É importante observar que o valor retornado pelo método getKeyChar() só possui sentido quando usado com eventos KEY_TYPED, uma vez que o caractere não é exibido quando o método é usado com os eventos KEY_PRESSED e KEY_RELEASED. Note ainda que a tecla Shift pode ser usada durante este evento. Assim, se combinarmos Shift + "s", o retorno será "S".

Este método retorna o valor da constante KeyEvent.CHAR_UNDEFINED se um caractere Unicode válido não existir para o evento de "digitação" da tecla.

Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 42 usuários muito felizes estudando em nosso site.