Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO

Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.

Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Como obter os modificadores dos métodos de uma classe ou interface usando o método getModifiers() da classe Method da linguagem Java

Quantidade de visualizações: 8669 vezes
O método getModifiers() da classe Method permite obter os modificadores (public, static, final, private, etc) de um determinado método. O retorno deste método é um valor inteiro que pode ser testado usando alguns métodos estáticos da classe Modifier.

O exemplo a seguir mostra como listar todos os métodos públicos da classe javax.swing.JButton e seus modificadores:

package arquivodecodigos;

import java.lang.reflect.*;
 
public class Estudos{
  public static void main(String args[]){
    // vamos carregar a classe JButton
    try{
      Class c = Class.forName(
        "javax.swing.JButton");
 
      // obtém os nomes dos métodos
      Method[] metodos = c.getMethods(); 
 
      for(int i = 0; i < metodos.length; i++){
        // obtém o nome do método
        String nome = metodos[i].getName();
 
        // obtém os modificadores
        int modificador = 
          metodos[i].getModifiers();
 
        String modificadores = "";
 
        if(Modifier.isPublic(modificador))
          modificadores += "public "; 
        if(Modifier.isPrivate(modificador))
          modificadores += "private ";          
        if(Modifier.isProtected(modificador))
          modificadores += "protected ";
        if(Modifier.isStatic(modificador))
          modificadores += "static ";
        if(Modifier.isFinal(modificador))
          modificadores += "final ";
 
        System.out.println(nome + " - " + 
          modificadores); 
      }
    }
    catch(ClassNotFoundException e){
      System.out.println(e.getMessage()); 
    }
 
    System.exit(0);
  }
}

Ao executar este exemplo nós teremos uma lista gigantesca de métodos declarados e herdados pela classe javax.swing.JButton. Veja:

getAccessibleContext - public
getUIClassID - public
isDefaultButton - public
isDefaultCapable - public
removeNotify - public
setDefaultCapable - public
updateUI - public
getUI - public
setAction - public
setModel - public
setUI - public
addActionListener - public
addChangeListener - public
addItemListener - public
doClick - public
doClick - public
getAction - public
getActionCommand - public
getActionListeners - public
getChangeListeners - public
getDisabledIcon - public
getDisabledSelectedIcon - public
getDisplayedMnemonicIndex - public
getHideActionText - public
getHorizontalAlignment - public
getHorizontalTextPosition - public
getIcon - public
getIconTextGap - public
getItemListeners - public
getLabel - public
getMargin - public
getMnemonic - public
getModel - public
getMultiClickThreshhold - public
getPressedIcon - public
getRolloverIcon - public
getRolloverSelectedIcon - public
getSelectedIcon - public
getSelectedObjects - public
getText - public
getVerticalAlignment - public
getVerticalTextPosition - public
imageUpdate - public
isBorderPainted - public
isContentAreaFilled - public
isFocusPainted - public
isRolloverEnabled - public
isSelected - public
removeActionListener - public
removeChangeListener - public
removeItemListener - public
setActionCommand - public
setBorderPainted - public
setContentAreaFilled - public
setDisabledIcon - public
setDisabledSelectedIcon - public
setDisplayedMnemonicIndex - public
setEnabled - public
setFocusPainted - public
setHideActionText - public
setHorizontalAlignment - public
setHorizontalTextPosition - public
setIcon - public
setIconTextGap - public
setLabel - public
setLayout - public
setMargin - public
setMnemonic - public
setMnemonic - public
setMultiClickThreshhold - public
setPressedIcon - public
setRolloverEnabled - public
setRolloverIcon - public
setRolloverSelectedIcon - public
setSelected - public
setSelectedIcon - public
setText - public
setVerticalAlignment - public
setVerticalTextPosition - public
update - public
contains - public
getLocation - public
print - public
getSize - public
isOpaque - public
disable - public
enable - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
getRootPane - public
getListeners - public
paintImmediately - public
paintImmediately - public
repaint - public
repaint - public
revalidate - public
setAlignmentX - public
setAlignmentY - public
addAncestorListener - public
addNotify - public
addVetoableChangeListener - public
computeVisibleRect - public
createToolTip - public
getActionForKeyStroke - public
getActionMap - public final
getAlignmentX - public
getAlignmentY - public
getAncestorListeners - public
getAutoscrolls - public
getBaseline - public
getBaselineResizeBehavior - public
getBorder - public
getBounds - public
getClientProperty - public final
getComponentPopupMenu - public
getConditionForKeyStroke - public
getDebugGraphicsOptions - public
getDefaultLocale - public static
getFontMetrics - public
getGraphics - public
getHeight - public
getInheritsPopupMenu - public
getInputMap - public final
getInputMap - public final
getInputVerifier - public
getInsets - public
getInsets - public
getMaximumSize - public
getMinimumSize - public
getNextFocusableComponent - public
getPopupLocation - public
getPreferredSize - public
getRegisteredKeyStrokes - public
getToolTipLocation - public
getToolTipText - public
getToolTipText - public
getTopLevelAncestor - public
getTransferHandler - public
getVerifyInputWhenFocusTarget - public
getVetoableChangeListeners - public
getVisibleRect - public
getWidth - public
getX - public
getY - public
grabFocus - public
hide - public
isDoubleBuffered - public
isLightweightComponent - public static
isManagingFocus - public
isOptimizedDrawingEnabled - public
isPaintingForPrint - public final
isPaintingTile - public
isRequestFocusEnabled - public
isValidateRoot - public
paint - public
printAll - public
putClientProperty - public final
registerKeyboardAction - public
registerKeyboardAction - public
removeAncestorListener - public
removeVetoableChangeListener - public
requestDefaultFocus - public
requestFocus - public
requestFocus - public
requestFocusInWindow - public
resetKeyboardActions - public
reshape - public
scrollRectToVisible - public
setActionMap - public final
setAutoscrolls - public
setBackground - public
setBorder - public
setComponentPopupMenu - public
setDebugGraphicsOptions - public
setDefaultLocale - public static
setDoubleBuffered - public
setFocusTraversalKeys - public
setFont - public
setForeground - public
setInheritsPopupMenu - public
setInputMap - public final
setInputVerifier - public
setMaximumSize - public
setMinimumSize - public
setNextFocusableComponent - public
setOpaque - public
setPreferredSize - public
setRequestFocusEnabled - public
setToolTipText - public
setTransferHandler - public
setVerifyInputWhenFocusTarget - public
setVisible - public
unregisterKeyboardAction - public
add - public
add - public
add - public
add - public
add - public
remove - public
remove - public
list - public
list - public
removeAll - public
addPropertyChangeListener - public
addPropertyChangeListener - public
getComponent - public
getComponentCount - public
getComponents - public
getFocusTraversalPolicy - public
invalidate - public
isFocusCycleRoot - public
isFocusCycleRoot - public
setFocusTraversalPolicy - public
addContainerListener - public
applyComponentOrientation - public
areFocusTraversalKeysSet - public
countComponents - public
deliverEvent - public
doLayout - public
findComponentAt - public
findComponentAt - public
getComponentAt - public
getComponentAt - public
getComponentZOrder - public
getContainerListeners - public
getFocusTraversalKeys - public
getLayout - public
getMousePosition - public
insets - public
isAncestorOf - public
isFocusTraversalPolicyProvider - public final
isFocusTraversalPolicySet - public
layout - public
locate - public
minimumSize - public
paintComponents - public
preferredSize - public
printComponents - public
removeContainerListener - public
setComponentZOrder - public
setFocusCycleRoot - public
setFocusTraversalPolicyProvider - public final
transferFocusDownCycle - public
validate - public
add - public
remove - public
toString - public
getName - public
contains - public
size - public
getLocation - public
getParent - public
setName - public
list - public
list - public
list - public
getSize - public
location - public
setSize - public
setSize - public
resize - public
resize - public
enable - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
action - public
isEnabled - public
isFocusOwner - public
removePropertyChangeListener - public
removePropertyChangeListener - public
repaint - public
repaint - public
repaint - public
getBackground - public
getBounds - public
getFocusCycleRootAncestor - public
getFont - public
getForeground - public
getPeer - public
getPropertyChangeListeners - public
getPropertyChangeListeners - public
getTreeLock - public final
isDisplayable - public
isMaximumSizeSet - public
isMinimumSizeSet - public
isPreferredSizeSet - public
isShowing - public
isVisible - public
nextFocus - public
setBounds - public
setBounds - public
setLocale - public
setLocation - public
setLocation - public
dispatchEvent - public final
getGraphicsConfiguration - public
getMousePosition - public
handleEvent - public
isFocusable - public
isLightweight - public
isValid - public
postEvent - public
transferFocus - public
transferFocusBackward - public
addComponentListener - public
addFocusListener - public
addHierarchyBoundsListener - public
addHierarchyListener - public
addInputMethodListener - public
addKeyListener - public
addMouseListener - public
addMouseMotionListener - public
addMouseWheelListener - public
bounds - public
checkImage - public
checkImage - public
createImage - public
createImage - public
createVolatileImage - public
createVolatileImage - public
enableInputMethods - public
getColorModel - public
getComponentListeners - public
getComponentOrientation - public
getCursor - public
getDropTarget - public
getFocusListeners - public
getFocusTraversalKeysEnabled - public
getHierarchyBoundsListeners - public
getHierarchyListeners - public
getIgnoreRepaint - public
getInputContext - public
getInputMethodListeners - public
getInputMethodRequests - public
getKeyListeners - public
getLocale - public
getLocationOnScreen - public
getMouseListeners - public
getMouseMotionListeners - public
getMouseWheelListeners - public
getToolkit - public
gotFocus - public
hasFocus - public
inside - public
isBackgroundSet - public
isCursorSet - public
isFocusTraversable - public
isFontSet - public
isForegroundSet - public
keyDown - public
keyUp - public
lostFocus - public
mouseDown - public
mouseDrag - public
mouseEnter - public
mouseExit - public
mouseMove - public
mouseUp - public
move - public
paintAll - public
prepareImage - public
prepareImage - public
removeComponentListener - public
removeFocusListener - public
removeHierarchyBoundsListener - public
removeHierarchyListener - public
removeInputMethodListener - public
removeKeyListener - public
removeMouseListener - public
removeMouseMotionListener - public
removeMouseWheelListener - public
setComponentOrientation - public
setCursor - public
setDropTarget - public
setFocusTraversalKeysEnabled - public
setFocusable - public
setIgnoreRepaint - public
show - public
show - public
transferFocusUpCycle - public
wait - public final
wait - public final
wait - public final
equals - public
hashCode - public
getClass - public final
notify - public final
notifyAll - public final


PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como adicionar novos elementos a um array PHP usando a notação [] - Adicionando elementos ao final de um array PHP

Quantidade de visualizações: 16005 vezes
Em várias situações nós precisamos incluir novos elementos ao final de um vetor (array) PHP. Para isso nós podemos usar a notação [], que adiciona o novo elemento ao array e incrementa sua faixa de índices automaticamente.

Veja um exemplo completo no qual declaramos um vetor e em seguida usamos a notação [] para adicionar três elementos ao seu final:

<?
// vamos declarar o vetor
$pessoas = array();

// define o elemento no índice 0
$pessoas[] = "Osmar J. Silva";
 
// define o elemento no índice 1
$pessoas[] = "Salvador M. Andrade";
             
// define o elemento no índice 2
$pessoas[] = "Dyego Fernandes de Sousa";
 
// vamos mostrar o conteúdo do vetor
var_dump($pessoas);
?>

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

array(3) { [0]=> string(14) "Osmar J. Silva" [1]=> string(19) "Salvador M. Andrade" [2]=> string(24) "Dyego Fernandes de Sousa" }

Esta dica foi revisada e testado no PHP 8.


Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet

Como tornar o TClientDataSet do Delphi somente leitura usando a propriedade ReadOnly

Quantidade de visualizações: 11994 vezes
Em algumas situações gostaríamos que um TClientDataSet fosse somente leitura, ou seja, não queremos permitir inserção, atualização ou exclusão dos dados do dataset. Para isso podemos usar a propriedade ReadOnly. Se seu valor for True, os dados do TClientDataSet serão apenas para leitura. Se o valor for False, os dados podem ser modificados e/ou novos dados podem ser inseridos no dataset. O valor padrão é False.

Em tempo de design a propriedade ReadOnly do TClientDataSet pode ser ajustada selecionando-se o componente no formulário e acessando o Object Inspector. Em tempo de execução esta propriedade pode ser ajustada por meio do seguinte trecho de código:

procedure TForm3.Button3Click(Sender: TObject);
begin
  // vamos tornar o TClientDataSet somente leitura
  ClientDataSet1.ReadOnly := True;
end;

Se necessário, podemos obter o valor desta propriedade em tempo de execução da seguinte forma:

procedure TForm3.Button3Click(Sender: TObject);
begin
  // vamos verificar se o TClientDataSet é somente leitura
  if ClientDataSet1.ReadOnly then
    ShowMessage('O ClientDataSet é somente leitura')
  else
    ShowMessage('O ClientDataSet NÃO é somente leitura')
end;

Ao executarmos este código e clicarmos no botão teremos uma mensagem parecida com:

"O ClientDataSet NÃO é somente leitura".

É importante observar que se tentarmos efetuar alguma operação que modifica o conteúdo de um TClientDataSet somente leitura nós teremos uma exceção do tipo:

Project Project2.exe raised exception class EDatabaseError with message 'ClientDataSet1': Cannot modify a read-only dataset'.

Quando ajustamos o valor da propriedade ReadOnly para True, automaticamente a propriedade CanModify do dataset é ajustada para False.

Importante: Mesmo que o valor da propriedade ReadOnly seja False, os usuários ainda podem ser impedidos de modificar os dados de um client dataset se este obtém seus dados a partir de um provider (por exemplo: TDataSetProvider). A propriedade Options do provider pode limitar se os dados podem ser editados e, se puderem, os tipos de alterações permitidos.

Esta dica foi escrita e testada no Delphi 2009.


Python ::: Dicas & Truques ::: Lista (List)

Como inverter a ordem dos elementos em uma lista Python usando o método reverse()

Quantidade de visualizações: 17229 vezes
Inverter a ordem dos itens de um vetor ou lista é uma das tarefas mais corriqueiras durante o trabalho de programação. Na linguagem Python nós podemos inverter os elementos de uma list usando o método reverse(), já embutido na linguagem.

Este método modifica a lista original. Veja um exemplo de seu uso:

def main():
  # cria uma lista de inteiros
  valores = [2, 5, 12, 2, 3, 32, 18]

  # exibe a lista na ordem original
  print(valores)

  # inverte a lista
  valores.reverse()

  # exibe a lista na ordem invertida
  print(valores)
  
if __name__== "__main__":
  main()

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

[2, 5, 12, 2, 3, 32, 18]
[18, 32, 3, 2, 12, 5, 2]


PHP ::: Dicas & Truques ::: Arquivos e Diretórios

Como renomear um arquivo em PHP usando a função rename()

Quantidade de visualizações: 26898 vezes
Arquivos podem ser renomeados em PHP usando a função rename(). Esta função recebe o caminho e nome atual do arquivo e o novo caminho e nome. Se o destino for diferente, o arquivo será movido de um diretório para outro. Veja um exemplo:

<?php
  // renomeia o arquivo testes.txt para testes2.txt
  $de = "/site/public_html/testes.txt";
  $para = "/site/public_html/testes2.txt";
  
  if(rename($de, $para)){
    echo "Arquivo renomeado com sucesso.";
  }
  else{
    echo "Não foi possível renomear o arquivo.";
  }
?>

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

Arquivo renomeado com sucesso.

A função rename() da linguagem PHP retorna um valor boolean (verdadeiro ou falso) indicando se a operação foi realizada com sucesso ou se houve um erro.


C ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Como alocar memória dinâmica em C usando a função malloc()

Quantidade de visualizações: 29253 vezes
A função malloc() é usada em C para alocarmos um bloco de memória. Esta função recebe a quantidade de bytes a serem alocados e retorna um ponteiro do tipo void (genérico) para o início do bloco de memória obtido. Veja sua assinatura:

void *malloc(size_t size);

Se a memória não puder se alocada, um ponteiro nulo (NULL) será retornado.

É importante se lembrar de alguns conceitos antes de usar esta função. Suponhamos que você queira alocar memória para um inteiro. Você poderia ter algo assim:

// aloca memória para um int
ponteiro = malloc(4);

Embora este código esteja correto, não é um boa idéia assumir que um inteiro terá sempre 4 bytes. Desta forma, é melhor usar o operador sizeof() para obter a quantidade de bytes em um inteiro em uma determinada arquitetura. Veja:

// aloca memória para um int
ponteiro = malloc(sizeof(int));

Eis o código completo para um aplicativo C que mostra como alocar memória para um inteiro e depois atribuir e obter o valor armazenado no bloco de memória alocado:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // ponteiro para uma variável do tipo inteiro
  int *ponteiro;

  // aloca memória para um int
  ponteiro = malloc(sizeof(int));

  // testa se a memória foi alocada com sucesso
  if(ponteiro)
    printf("Memoria alocada com sucesso.\n");
  else
    printf("Nao foi possivel alocar a memoria.\n");

  // atribui valor à memória alocada
  *ponteiro = 45;

  // obtém o valor atribuído
  printf("Valor: %d\n\n", *ponteiro);

  // libera a memória
  free(ponteiro);

  system("PAUSE");
  return 0;
}

Uma aplicação interessante da função malloc() é quando precisamos construir uma matriz dinâmica. Veja como isso é feito no código abaixo:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int i;

  // quantidade de elementos na matriz
  int quant = 10;

  // ponteiro para o bloco de memória
  int *ponteiro;

  // aloca memória para uma matriz de inteiros
  ponteiro = malloc(quant * sizeof(int));

  // testa se a memória foi alocada com sucesso
  if(ponteiro)
    printf("Memoria alocada com sucesso.\n");
  else{
    printf("Nao foi possivel alocar a memoria.\n");
    exit(1);
  }

  // atribui valores aos elementos do array
  for(i = 0; i < quant; i++){
    ponteiro[i] = i * 2;
  }

  // exibe os valores
  for(i = 0; i < quant; i++){
    printf("%d  ", ponteiro[i]);
  }

  // libera a memória
  free(ponteiro);

  printf("\n\n");
  system("PAUSE");
  return 0;
}



C ::: Dicas & Truques ::: Arquivos e Diretórios

Como contar as linhas de um arquivo usando a função fgetc() da linguagem C

Quantidade de visualizações: 21072 vezes
Em algumas situações precisamos obter a quantidade de linhas em um arquivo em C. Nesta dica eu mostro como isso pode ser feito usando-se a função fgetc(), no header stdio.h. Note que aqui estamos assumindo que o arquivo texto não possui uma quebra de linha após a última linha de texto.

Veja o código comentado:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // nome e local do arquivo que será aberto para
  // obtermos a quantidade de linhas
  FILE *arquivo = fopen("c:\\testes.txt", "r");
  int caractere, existe_linhas = 0;
  int quant_linhas = 0;
  
  while((caractere = fgetc(arquivo)) != EOF){
    existe_linhas = 1; // há conteúdo no arquivo
    
    if(caractere == '\n'){ // é uma quebra de linha?
      // vamos incrementar a quantidade de linhas
      quant_linhas++;             
    } 
  }

  // se não houver uma quebra de linha na última linha
  // a contagem será sempre um a menos. Assim, é melhor
  // incrementar quant_linhas mais uma vez
  if(existe_linhas)
    quant_linhas++;

  // vamos exibir o resultado
  printf("O arquivo possui %d linhas.", quant_linhas);
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



Java ::: Dicas & Truques ::: Formatação de datas, strings e números

Como usar o método format() da classe NumberFormat do Java para formatar um valor float ou double de acordo com as configurações regionais - Revisado

Quantidade de visualizações: 11351 vezes
Nesta dica mostrarei como usar o método format() da classe NumberFormat da linguagem Java. Esta classe está no pacote java.text e é usada para a formatação e análise de valores numéricos.

Note como usei o método getInstance() sem argumentos. Isso nos permite retornar uma instância de NumberFormat de acordo com as configurações regionais da máquina na qual o código está sendo executado.

Veja o código completo:

package arquivodecodigos;

import java.text.NumberFormat;

public class Estudos{
  public static void main(String[] args){
    // vamos double a ser formatado
    double valor = 1234567.89;
    
    // vamos obter uma instância de acordo com as configurações
    // regionais
    NumberFormat nf = NumberFormat.getInstance();
    // e agora usamos o método format() para formatar
    String numFormatado = nf.format(valor);
    
    // exibimos o valor original
    System.out.println("Sem formatação: " + valor);
    // com formatação
    System.out.println("Com formatação: " + numFormatado); 
  }
}

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

Sem formatação: 1234567.89
Com formatação: 1.234.567,89

Esta dica foi revisada e testada no Java 8.


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

Exercícios Resolvidos de Java - Java Básico - Lendo a nota de um aluno e classificando-a com as letras A, B, C, D ou E

Quantidade de visualizações: 4307 vezes
Exercício Resolvido de Java - Java Básico - Lendo a nota de um aluno e classificando-a com as letras A, B, C, D ou E

Pergunta/Tarefa:

Escreva um programa Java que lê a nota de um aluno e a classifica de acordo com as seguintes regras:

1) Maior ou igual a 9,00 - A
2) Maior ou igual a 8,0 e menor que 9,0 - B
3) Maior ou igual a 7,0 e menor que 8,0 - C
4) Maior ou igual a 6,0 e menor que 7,0 - D
5) Menor que 6,0 - E

Sua saída deverá ser parecida com:



Resposta/Solução:

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

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    
    // vamos solicitar que o usuário informe a nota do aluno
    System.out.print("Informe a nota do aluno: ");
    double nota = Double.parseDouble(entrada.nextLine());
    char letra = 'A'; // vai guardar a letra de classificação
    
    // a nota está dentro da faixa esperada?
    if((nota < 0) || (nota > 10)){
      System.out.println("A nota esta fora da faixa esperada.");  
    }
    else{
      if(nota < 6.0){
        letra = 'E';  
      }
      else if((nota >= 6.0) && (nota < 7.0)){
        letra = 'D';  
      }
      else if((nota >= 7.0) && (nota < 8.0)){
        letra = 'C';  
      }
      else if((nota >= 8.0) && (nota < 9.0)){
        letra = 'B';  
      }
      else{
        letra = 'A';  
      }
    }
    
    // vamos mostrar a classificação
    System.out.println("A classificação desta nota é: " + letra);
    
    System.out.println("\n");
  }
}



Android Java ::: android.widget ::: Button

Como detectar um clique em um botão do Android usando setOnClickListener() e exibir uma mensagem AlertDialog

Quantidade de visualizações: 1842 vezes
O método setOnClickListener() nos permite definir a ação que será disparada ao clicarmos em um botão. Note que primeiro nós localizamos o botão no arquivo XML de layout usando o método findViewById() da classe View.

Comece analisando o arquivo XML de layout no qual criamos um botão e o colocamos como filho de um elemento LinearLayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
  http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  tools:context=".MainActivity">

  <Button xmlns:android="
    http://schemas.android.com/apk/res/android"
    android:id="@+id/btn_enviar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btn_enviar"
    android:textAllCaps="false"
    />
</LinearLayout>

E agora o código Java no arquivo MainActivity.java:

package com.example.estudosandroid;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // vamos detectar um clique no botão e exibir uma mensagem AlertDialog
    Button button = (Button) findViewById(R.id.btn_enviar);
    button.setOnClickListener(new View.OnClickListener(){
      public void onClick(View view) {
        AlertDialog dialogo = new
          AlertDialog.Builder(MainActivity.this).create();
        dialogo.setTitle("Aviso");
        dialogo.setMessage("Esta é uma mensagem de aviso");
        dialogo.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
          new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which){
              dialog.dismiss(); // fecha o AlertDialog
            }
          }
        );
        dialogo.show();
      }
    });
  }
}


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


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 Apenas R$ 32,90


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