Você está aqui: Java ::: Classes e Componentes ::: JButton |
Como disparar o clique de um JButton ao pressionar a tecla EnterQuantidade de visualizações: 16522 vezes |
/* Este exemplo mostra como fazer com que um JButton reaja ao pressionamento da tecla Enter. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ public Estudos() { super("A classe JButton"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); // Cria um botão com o texto "Clique Aqui" JButton btn = new JButton("Clique Aqui"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ JOptionPane.showMessageDialog(null, "Fui clicado"); } } ); // Faz com que o botão "reaja" ao pressionar Enter reagirEnter(btn); // Adiciona o botão à janela c.add(btn); setSize(350, 250); setVisible(true); } public static void reagirEnter(JButton btn){ btn.registerKeyboardAction( btn.getActionForKeyStroke( KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, false)), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED ); btn.registerKeyboardAction( btn.getActionForKeyStroke( KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, true)), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true), JComponent.WHEN_FOCUSED ); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
![]() |
Java ::: Coleções (Collections) ::: ArrayList |
Como retornar o índice da última ocorrência de um elemento em uma ArrayList do Java usando a função lastIndexOf()Quantidade de visualizações: 9284 vezes |
Em algumas situações nós gostaríamos de pesquisar um valor em um ArrayList e retornar o índice de sua última aparição, para o caso desse elemento estar contido mais de uma vez na coleção. Para isso nós podemos usar o método lastIndexOf(). Se o elemento pesquisado não estiver na ArrayList, o valor -1 será retornado. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<String>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); nomes.add("Maria"); // obtém o índice da última ocorrência do // nome "Maria" int indice = nomes.lastIndexOf("Maria"); System.out.println("O último índice do nome pesquisado é: " + indice); System.exit(0); } } Ao executarmos este código Java nós teremos o seguinte resultado: O último índice do nome pesquisado é: 4 |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como ordenar um vetor de inteiros em ordem decrescente em JavaQuantidade de visualizações: 20928 vezes |
Nesta dica mostrarei como é possível ordenar um array (vetor) de ints em ordem decrescente usando o método sort() da classe Arrays e um método inverter() personalizado. É claro que há várias outras formas de se conseguir realizar esta tarefa. Espero que esta seja mais uma técnica adicionada ao seu arsenal. Veja o código Java completo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.util.*; public class Estudos{ public static void main(String[] args){ // vamos declarar e construir um vetor de 5 inteiros int[] valores = new int[5]; // inicializa os elementos do array valores[0] = 23; valores[1] = 65; valores[2] = 2; valores[3] = 87; valores[4] = 34; // ordena os valores Arrays.sort(valores); System.out.println("Ordenado em ordem crescente:"); for(int valor : valores){ System.out.print(valor + " "); } // vamos inverter o vetor agora inverter(valores); // exibe os valores dos elementos do array // usando o laço for melhorado System.out.println("\nOrdenado em ordem decrescente:"); for(int valor : valores){ System.out.print(valor + " "); } System.out.println("\n"); System.exit(0); } // método que recebe um array e inverte a ordem // de seus elementos public static void inverter(int[] b){ int esquerdo = 0; int direito = b.length-1; while (esquerdo < direito) { int temp = b[esquerdo]; b[esquerdo] = b[direito]; b[direito] = temp; esquerdo++; direito--; } } } Ao executar este código Java nós teremos o seguinte resultado: Ordenado em ordem crescente: 2 23 34 65 87 Ordenado em ordem decrescente: 87 65 34 23 2 |
Java ::: Dicas & Truques ::: Mouse e Teclado |
Java Swing - Como detectar um clique em um botão JButton e exibir uma mensagem JOptionPaneQuantidade de visualizações: 8 vezes |
Nesta dica mostrarei como podemos usar o método addActionListener() da linguagem Java para definir um evento de clique a um botão JButton. Quando o usuário clicar no botão nós vamos interceptar este evento e mostrar uma mensagem JOptionPane.showMessageDialog(). Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Estudos extends JFrame{ JButton btn; public Estudos() { super("Detectando um clique em um botão"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); btn = new JButton("Clique"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ JOptionPane.showMessageDialog(null, "Fui clicado!"); } } ); c.add(btn); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Java ::: Dicas & Truques ::: Data e Hora |
Como retornar a diferença de dias entre duas datas em Java - Datas e horas em JavaQuantidade de visualizações: 10152 vezes |
Algumas vezes precisamos obter a diferença de dias entre duas datas em Java. Esta dica mostra como isso pode ser feito usando dois objetos da classe Date. Veja que usamos o método parse() da classe SimpleDateFormat para construir as duas datas e o método getTime() da classe Date para obter a quantidade de milisegundos desde 1º de janeiro de 1970 GMT armazenada em cada um dos objetos Date. O resto é um cálculo matemático bem simples:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.util.*; import java.text.*; public class Estudos{ public static void main(String args[]){ try{ // constrói a primeira data DateFormat fm = new SimpleDateFormat("dd/MM/yyyy"); Date data1 = (Date)fm.parse("20/12/2019"); // constrói a segunda data fm = new SimpleDateFormat("dd/MM/yyyy"); Date data2 = (Date)fm.parse("25/01/2020"); // vamos obter a diferença em dias long diff = data2.getTime() - data1.getTime(); // exibe o resultado System.out.println("Primeira data: " + data1.toString()); System.out.println("Segunda data: " + data2.toString()); System.out.println("Diferença em dias = " + diff / (1000 * 60 * 60 * 24)); } catch(ParseException e){ System.out.println("Erro: " + e.getMessage()); } } } Ao executarmos este código Java nós teremos o seguinte resultado: Primeira data: Fri Dec 20 00:00:00 BRST 2019 Segunda data: Sat Jan 25 00:00:00 BRST 2020 Diferença em dias = 36 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Escreva um programa Java que usa uma função recursiva para retornar a quantidade de dígitos presentes em um número inteiro informado pelo usuárioQuantidade de visualizações: 1027 vezes |
Pergunta/Tarefa: Escreva um programa Java usa uma função recursiva para retornar a quantidade de dígitos presentes em um número inteiro informado pelo usuário. Você pode usar qualquer técnica de recursividade disponível, desde que o retorno da função seja um valor inteiro. Você deverá implementar a seguinte função recursiva: public static int quantDigitos(int numero){ // seu código aqui } Informe um número inteiro de qualquer tamanho: 4983 O número informado possui 4 dígitos Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package exercicio; import java.util.Scanner; public class Exercicio{ public static void main(String[] args) { // cria um novo objeto da classe Scanner Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar um número inteiro System.out.print("Informe um número inteiro de qualquer tamanho: "); int num = Integer.parseInt(entrada.nextLine()); // vamos obter a quantidade de dígitos no número usando // uma chamada à função recursiva quant_digitos() int quant = quantDigitos(num); // mostramos o resultado System.out.println("O número informado possui " + quant + " dígitos"); } // função recursiva que recebe um número inteiro e retorna // sua quantidade de dígitos public static int quantDigitos(int numero){ if ((numero / 10) == 0){ // atenção: divisão inteira // retorna o caso base return 1; } else{ // efetua mais uma chamada recursiva return 1 + quantDigitos(numero / 10); } } } |
Java ::: Dicas & Truques ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Como usar o operador de bits & (E/AND sobre bits) em Java - Java Avançado - Manipulação de bits em JavaQuantidade de visualizações: 6683 vezes |
Esta dica de Java é muito útil para quem está se preparando para entrevistas de código ou desafios de programação. A manipulação de bits é fator importante para testar as habilidades de candidatos a vagas de programador, pois ela demonstra um conhecimento muito aprofundado de lógica de programação e também de rotinas de baixo nível. O operador de bits & (E/AND sobre bits) da linguagem Java é usado quando queremos comparar os bits individuais de dois valores integrais (inteiros) e produzir um terceiro resultado. Os bits no resultado serão configurados como 1 se os bits correspondentes nos dois outros valores foram 1. Em caso contrário os bits são configurados como 0. Vamos analisar os seguintes valores binários: a) 0101 (5 decimal) b) 0100 (4 decimal) Quando aplicamos o operador & nestes dois valores teremos o seguinte resultado: 0101 0100 ---- 0100 Veja que o resultado é 0100, uma vez que apenas o segundo bit de cada valor está configurado como 1. Vamos ver isso em Java agora. Observe o seguinte trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Main { public static void main(String[] args) { int a = 5; int b = 4; int c = a & b; // exibe o resultado (em inteiro e em bytes) System.out.println("a = " + obterBits(a) + " (" + a + ")"); System.out.println("b = " + obterBits(b) + " (" + b + ")"); System.out.println("a & b = " + obterBits(c) + " (" + c + ")"); } // método auxiliar que converte um inteiro em sua representação em bits public static String obterBits(int valor){ int mascara = 1 << 31; StringBuffer buffer = new StringBuffer(35); for(int i = 1; i <= 32; i++){ if((valor & mascara) == 0){ buffer.append('0'); } else{ buffer.append('1'); } valor <<= 1; if(i % 8 == 0){ buffer.append(' '); } } return buffer.toString(); } } Ao executar este código teremos o seguinte resultado: a = 00000000 00000000 00000000 00000101 (5) b = 00000000 00000000 00000000 00000100 (4) a & b = 00000000 00000000 00000000 00000100 (4) |
Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como implementar a ordenação Quicksort em Java - Apostila de Java para iniciantesQuantidade de visualizações: 390 vezes |
A ordenação Quicksort é um dos algorítmos de ordenação mais encontrados em aplicações reais de programação. No Delphi esta ordenação é encontrada no objeto TList. No Java podemos encontrá-lo no método Arrays.sort(). Na linguagem C a ordenação Quicksort é implementada na função qsort() da biblioteca padrão. O algoritmo de ordenação Quicksort é do tipo dividir para conquistar (divide-and-conquer principle). Neste tipo de algoritmo o problema é dividido em sub-problemas e a solução é concatenada quando as chamadas recursivas atingirem o caso base. O vetor (ou array) a ser ordenado é dividido em duas sub-listas por um elemento chamado pivô, resultando em uma lista com elementos menores que o pivô e outra lista com os elementos maiores que o pivô. Esse processo é repetido para cada chamada recursiva. Sim, a ordenação Quicksort faz uso extensivo de recursividade, razão pela qual devemos ter muito cuidado para não estourar a pilha do sistema. Existem muitos estudos sobre o pivô ideal para a ordenação Quicksort. Nessa dica adotarei o último elemento do array ou sub-array como pivô. Em vetores não ordenados essa estratégia, em geral, resulta em uma boa escolha. Vamos ao código Java então? Veja um programa Java completo demonstrando o uso da ordenação Quicksort para um array de 10 elementos inteiros: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos declarar um array de 10 elementos int valores[] = new int[10]; // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir ao usuário para informar os valores para o vetor for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor do elemento " + i + ": "); valores[i] = Integer.parseInt(entrada.nextLine()); } // vamos mostrar o array informado System.out.println("\nO array informado foi:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } // vamos ordenar o vetor usando a ordenação Quicksort quickSort(valores, 0, valores.length - 1); System.out.println("\n\nO array ordenado é:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } System.out.println("\n\n"); } // função de implementação da ordenação Quicksort public static void quickSort(int vetor[], int inicio, int fim) { // o início é menor que o fim? if (inicio < fim) { // vamos obter o novo índice da partição int indiceParticao = particionar(vetor, inicio, fim); // efetuamos novas chamadas recursivas quickSort(vetor, inicio, indiceParticao - 1); quickSort(vetor, indiceParticao + 1, fim); } } // função que retorna o índice de partição private static int particionar(int vetor[], int inicio, int fim) { // para guardar o pivô int pivot = vetor[fim]; int i = (inicio - 1); for (int j = inicio; j < fim; j++) { if (vetor[j] <= pivot) { i++; // fazemos a troca int temp = vetor[i]; vetor[i] = vetor[j]; vetor[j] = temp; } } // efetua a troca int temp = vetor[i + 1]; vetor[i + 1] = vetor[fim]; vetor[fim] = temp; return i + 1; } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor do elemento 0: 7 Informe o valor do elemento 1: 2 Informe o valor do elemento 2: 43 Informe o valor do elemento 3: 1 Informe o valor do elemento 4: 9 Informe o valor do elemento 5: 6 Informe o valor do elemento 6: 22 Informe o valor do elemento 7: 3 Informe o valor do elemento 8: 37 Informe o valor do elemento 9: 5 O array informado foi: 7 2 43 1 9 6 22 3 37 5 O array ordenado é: 1 2 3 5 6 7 9 22 37 43 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Como converter de binário para decimal em Java usando o laço forQuantidade de visualizações: 6037 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o laço for para converter um número binário (como uma String) em sua representação decimal (como um int). Peça ao usuário para informar um número binário e mostre o mesmo em decimal (como um int). Sua solução deve obrigatoriamente usar o laço for. Sua saída deverá ser parecida com: Informe um número binário: 1100 A representação decimal do valor binário 1100 é 12 Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args) { // vamos fazer a leitura usando a classe Scanner Scanner entrada = new Scanner(System.in); // vamos ler o número binário (como uma String) System.out.print("Informe um número binário: "); String bin = entrada.nextLine(); int decimal = 0; // guarda a representação decimal // vamos percorrer todos os dígitos do número binário começando do início for(int i = 0, exp = bin.length() - 1; i < bin.length(); i++, exp--){ // converte o caractere atual para inteiro int temp = Character.digit(bin.charAt(i), 10); decimal = decimal + (temp * (int)Math.pow(2, exp)); } System.out.println("A representação decimal do valor binário " + bin + " é " + decimal); } } |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Python - Como calcular o coeficiente angular de uma reta em Python dados dois pontos no plano cartesiano |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |