Você está aqui: Java ::: Pacote java.awt.image ::: BufferedImage |
|
Como virar uma imagem verticalmente usando um BufferedImage do Java em conjunto com um AffineTransformQuantidade de visualizações: 731 vezes |
|
Nesta dica mostrarei como inverter uma imagem na vertical, ou seja, dar um flip vertical, usando um BufferedImage do Java. Note que nós vamos carregar uma imagem JPG, aplicar um AffineTransform nela e, em seguida, salvaremos ela com outro nome. Veja que virar uma imagem na vertical é diferente de girar (rotacionar) a mesma. Quando uma imagem sofre um flip na vertical, os textos dela ficam invertidos. Veja o código completo para o exemplo:
|
|
Link para compartilhar na Internet ou com seus amigos: | |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Exercícios Resolvidos de Java - Escreva uma classe Biblioteca que possui uma ArrayList de objetos da classe Livro. Forneça um menu para listar, cadastrar, pesquisar e excluir livrosQuantidade de visualizações: 435 vezes |
Pergunta/Tarefa: Escreva um programa Java contendo duas classes: Biblioteca e Livro. A classe Biblioteca deverá ter uma coleção de livros, ou seja, uma ArrayList de objetos da classe Livro. Além da coleção de livros a classe Biblioteca deverá conter um atributo nome, que será informado assim que a classe for instanciada. A classe Livro, por sua vez, deverá possuir os atributos id, titulo, autor e paginas. O atributo id deverá ser auto-incremento, isto é, 1 para o primeiro livro cadastrado, 2 para o segundo, e assim por diante. Além disso, a exclusão de livros deverá ser feita de acordo com o seu id ou título. Seu programa deverá exibir um menu de opções para as diversas operações da biblioteca. Uma boa opção em Java é usar a estrutura switch case para a criação do menu de opções. Atenção: todos os métodos de manipulação de livros deverão estar na classe Biblioteca, e não na classe principal do programa Java. Para finalizar, tanto a classe Biblioteca quanto a classe Livro deverão apresentar boas práticas de programação orientada a objetos: nomenclatura correta de classes, atributos e métodos, encapsulamento de dados e construtores. Sua saída deverá ser parecida com: ------------------------------------------------- :: Biblioteca Programação e Artes :: ------------------------------------------------- Bem-vindo(a) ao sistema. Escolha a opção desejada 1 - Novo Livro 2 - Listar Livros 3 - Pesquisar Livro 4 - Excluir Livro 5 - Sair Sua opção: 1 Título: JAVA PARA INICIANTES Autor: OSMAR J SILVA Quant Páginas: 480 O livro foi cadastrado com sucesso Veja a resolução comentada deste exercício em Java: Código para a classe Livro, que deve estar no arquivo Livro.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; // definição da classe Livro public class Livro { private int id; // id do livro. Não pode repetir private String titulo; private String autor; private int paginas; // construtor vazio da classe Livro public Livro() {} // construtor cheio da classe Livro public Livro(int id, String titulo, String autor, int paginas) { this.id = id; this.titulo = titulo; this.autor = autor; this.paginas = paginas; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getAutor() { return autor; } public void setAutor(String autor) { this.autor = autor; } public int getPaginas() { return paginas; } public void setPaginas(int paginas) { this.paginas = paginas; } } Código para a classe Biblioteca, que deve estar no arquivo Biblioteca.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; // imports necessários import java.util.ArrayList; import java.util.Scanner; // definição da classe Biblioteca public class Biblioteca { String nome; ArrayList<Livro> livros; // ArrayList para guardar os livros // variável do tipo int para gerar IDs auto-incremento para os livros int idUltimoLivroCadastrado = 0; // construtor da classe public Biblioteca(String nome) { this.nome = nome; this.livros = new ArrayList(); } // exibe o menu de opções da biblioteca public void exibirMenu(){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // variáveis temporárias Livro temp; String pesquisaLivro; // um laço infinito com as opções do menu while(true){ System.out.println("\n-------------------------------------------------"); System.out.println(":: " + this.nome + " ::"); System.out.println("-------------------------------------------------"); System.out.println("Bem-vindo(a) ao sistema. Escolha a opção desejada\n"); System.out.println("1 - Novo Livro"); System.out.println("2 - Listar Livros"); System.out.println("3 - Pesquisar Livro"); System.out.println("4 - Excluir Livro"); System.out.println("5 - Sair"); System.out.print("\nSua opção: "); // lê a opção do usuário int opcao = Integer.parseInt(entrada.nextLine()); // um menu switch para ler as opções do menu switch(opcao){ case 1: // vamos cadastrar um novo livro System.out.print("\nTítulo: "); String titulo = entrada.nextLine(); System.out.print("Autor: "); String autor = entrada.nextLine(); System.out.print("Quant Páginas: "); int quantPaginas = Integer.parseInt(entrada.nextLine()); // vamos gerar o id deste livro int id = ++this.idUltimoLivroCadastrado; // agora vamos criar um novo objeto da classe Livro Livro livro = new Livro(id, titulo, autor, quantPaginas); // e o adicionamos no ArrayList de livros livros.add(livro); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO livro foi cadastrado com sucesso"); break; case 2: // vamos listar os livros cadastrados if(livros.isEmpty()){ System.out.println("\nNão há nenhum livro cadastrado."); } else{ for(int i = 0; i < livros.size(); i++){ temp = livros.get(i); // obtém o livro da iteração atual System.out.println("\nId: " + temp.getId()); System.out.println("Título: " + temp.getTitulo()); System.out.println("Autor: " + temp.getAutor()); System.out.println("Quant. Paginas: " + temp.getPaginas()); } } break; case 3: // vamos pesquisar um livro System.out.print("\nInforme o id ou título do livro: "); pesquisaLivro = entrada.nextLine(); // chamamos o método que pesquisa o livro temp = this.pesquisarLivro(pesquisaLivro); if(temp == null){ // livro não encontrado System.out.println("\nO livro náo foi encontrado."); } else{ // mostra o livro encontrado System.out.println("\nId: " + temp.getId()); System.out.println("Título: " + temp.getTitulo()); System.out.println("Autor: " + temp.getAutor()); System.out.println("Quant. Paginas: " + temp.getPaginas()); } break; case 4: // vamos excluir um livro System.out.print("\nInforme o id ou título do livro a ser excluído: "); pesquisaLivro = entrada.nextLine(); // chamamos o método que pesquisa o livro temp = pesquisarLivro(pesquisaLivro); if(temp == null){ // livro não encontrado System.out.println("\nO livro não foi encontrado."); } else{ // vamos excluir este livro livros.remove(temp); System.out.println("\nLivro excluído com sucesso."); } break; case 5: // sai da aplicação System.out.println("\nObrigado por usar a biblioteca\n"); System.exit(0); default: System.out.println("\nOpção inválida\n"); break; } } } // método que pesquisa um livro pelo id ou e retorna um objeto da classe Livro public Livro pesquisarLivro(String pesquisaLivro){ Livro livro = null; // este livro existe? for(int i = 0; i < livros.size(); i++){ // pesquisa pelo id if(Integer.toString(livros.get(i).getId()).equals(pesquisaLivro)){ return livros.get(i); } // pesquisar por título else if(livros.get(i).getTitulo().contains(pesquisaLivro)){ return livros.get(i); } } return livro; } } E aqui está o código para a classe principal Estudos, no arquivo Estudos.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; public class Estudos { public static void main(String[] args) { // vamos criar um novo objeto da classe Biblioteca Biblioteca b = new Biblioteca("Biblioteca Programação e Artes"); // mostra o menu da biblioteca b.exibirMenu(); } } |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como adicionar um JPopupMenu a um JTextAreaQuantidade de visualizações: 9986 vezes |
Neste exemplo mostrarei como é possível associar um JPopupMenu a um JTextArea. Dessa forma, quando clicarmos com o botão auxiliar na área de texto, nós teremos algumas opções de menu, tais como copiar, colar, selecionar tudo, etc. Veja o resultado na imagem abaixo: E aqui está o código Java Swing completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Estudos extends JFrame{ JTextArea textArea; JPopupMenu popup; JMenuItem selecionar; public Estudos() { super("Uso de JPopupMenu em um JTextArea"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); textArea = new JTextArea(10, 20); JScrollPane scrollPane = new JScrollPane(textArea); textArea.addMouseListener( new MouseAdapter(){ @Override public void mouseReleased(MouseEvent e){ if(e.isPopupTrigger()) popup.show(e.getComponent(), e.getX(), e.getY()); } } ); // cria o JPopupMenu popup = new JPopupMenu(); selecionar = new JMenuItem("Selecionar Tudo"); selecionar.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent ev){ textArea.requestFocus(); textArea.selectAll(); } } ); popup.add(selecionar); // fim menu c.add(scrollPane); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java |
Simulação de Sistema Bancário usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão consoleQuantidade de visualizações: 16225 vezes |
Sobre este projeto Java Durante estes anos que tenho trabalhado como freelancer, mais da metade das requisições dos meus clientes foram ajuda para desenvolver idéias de programação orientada a objetos em Java para projeto de faculdades e universidades. Com isso percebi que boa parte dos alunos e iniciantes em programação orientada a objetos já entendem toda a teoria. O que lhes falta é prática, ou seja, aplicar estes conhecimentos em aplicações do mundo real. Pensando nisso, apresento a você um projeto muito interessante e que, se bem entendido e praticado, o ajudará a desenvolver qualquer tipo de aplicação, seja comercial ou para solucionar problemas cotidianos. O projeto Java apresentado nesta dica é uma simulação completa de um Sistema Bancário, tudo com código fonte em Java, comentado, com variáveis em português, em um nível médio de programação, para facilitar o entendimento de todos. Nesta simulação nós temos a criação de classes Java, construtores, encapsulamento de dados, agregação e composição, métodos com retorno e sem retorno, variáveis estáticas, variáveis públicas e privadas, e relacionamento entre objetos (um para um, um para muitos, muitos para um) usando ArrayList. Sim, o projeto faz uso extensivo de ArrayList, o que o torna muito rico para o aprendizado e fixação dos conhecimentos da linguagem Java e suas classes principais. O Diagrama de Classes Java Antes de falarmos mais sobre o projeto, dê uma boa olhada no seu diagrama de classes: Como a aplicação está estruturada? Como podemos ver no diagrama de classes, nós temos uma classe Sistema que contém zero ou vários objetos da classe Banco (relacionamento um para muitos). A classe Banco, por sua vez, possui uma ArrayList de objetos da classe Agência, ou seja, mais um relacionamento um para muitos, já que cada agência pertence a um único banco. Cada agência pode possuir zero ou mais contas, e cada conta possui um ArrayList de objetos da classe Transação, o que nos permite registrar todas as operações nas contas e emitir o extrato bancário, com os débitos, créditos e transferências entre contas. Tudo isso é feito por meio de vários menus de opções, como podemos ver na imagem a seguir: Devo usar ArrayList do Java para desenvolver o sistema? Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos bancos, pessoas, agências e contas quisermos. Dessa forma, veja, por exemplo, o trecho de código que cria um novo banco: switch(opcao){ case 1: // vamos cadastrar um novo banco System.out.print("\nNúmero do Banco: "); String numeroBanco = entrada.nextLine(); System.out.print("Nome do Banco: "); String nomeBanco = entrada.nextLine(); // vamos incrementar o contador de bancos Banco.contadorBancos++; // agora vamos criar um novo objeto da classe Banco Banco b = new Banco(Banco.contadorBancos, nomeBanco, numeroBanco); // e o adicionamos no ArrayList de bancos bancos.add(b); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO banco criado com sucesso"); break; Note que este trecho de código é parte do case da opção Novo Banco do menu Gerenciar Bancos. Veja como usamos uma variável estática contadorBancos da classe Banco para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada banco. Veja agora mais um trecho de código muito interessante. Trata-se case 3: // vamos pesquisar uma conta System.out.print("\nId, número ou nome cliente da conta: "); pesquisaConta = entrada.nextLine(); // chamamos o método que pesquisa a conta temp = pesquisarConta(agenciaAtual, pesquisaConta); if(temp == null){ // conta não encotrada System.out.println("\nConta não encontrada na agência."); } else{ // mostra a conta encontrada System.out.println("\nId da conta bancária: " + temp.getId()); System.out.println("Número da conta: " + temp.getNumero()); System.out.println("Cliente: " + temp.getCliente().getNome()); System.out.println("Agência: " + agenciaAtual.getNumero() + " - " + agenciaAtual.getCidade()); System.out.println("Banco: " + bancoAtual.getNumero() + " - " + bancoAtual.getNome()); System.out.println("Saldo atual: " + temp.getSaldo()); System.out.println("Limite atual: " + temp.getLimite()); } break; Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real. O fechamento com chave de ouro O produto final da aplicação Java deverá ser um extrato bancário mostrando os dados da conta escolhida, o histórico de transações com data, tipo da transação e valor, e o saldo atual da conta, com ou sem limite. Veja na imagem abaixo a formatação apresentada (mesmo em modo texto): Como posso obter este código fonte? Os links para você baixar todas as versões deste projeto estão abaixo: 1) SBJCNB-A - Sistema Bancário em Java com Código Fonte Versão Console - NetBeans IDE - Faça o Download. 2) SBJCNB-B - Sistema Bancário em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE - Faça o Download. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |