Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Dicas & Truques ::: Formulários e Janelas

Como definir um ícone para a janela do aplicativo Java Swing usando o método setIconImage() da classe JFrame

Quantidade de visualizações: 16482 vezes
Este exemplo mostra como definir um ícone para uma janela JFrame do Java Swing. Antes de testar o código, certifique-se de ter uma imagem chamada icon.gif no diretório de execução do aplicativo (ou no local que você especificar).

Veja o código completo para o exemplo:

Este trecho de código ou resolução de exercício faz parte do Super Pack 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos em Java, Python, VisuAlg, Portugol, Delphi, C#, C, C++, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Aprenda a programar resolvendo problemas do mundo real. Tudo em português, com comentários em português.

Quero Ser Apoiador(a)


Link para compartilhar na Internet ou com seus amigos:

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

O manômetro

Um manômetro é o instrumento utilizado para medir a pressão de fluidos contidos em recipientes fechados. O manômetro para medição da pressão absoluta é usado quando pressões devem ser medidas, independentemente da pressão atmosférica. A pressão do meio medido é determinada contra uma pressão de referência, sendo que esta última corresponde ao ponto zero da pressão absoluta.

Nesse contexto, determine a pressão manométrica em P devido à deflexão do mercúrio do manômetro em U da figura a seguir.



A) Aproximadamente 77kPa.

B) Aproximadamente 89kPa.

C) Aproximadamente 94kPa.

D) Aproximadamente 106kPa.

E) Aproximadamente 111kPa.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Raio Hidráulico

Qual é o raio hidráulico em um canal de seção retangular com 2,00 m de largura por 1,20 m de altura? Considere que este canal está preenchido com 1/3 de água da sua capacidade.



A) 0,10 m

B) 0,29 m

C) 0,19 m

D) 2,29 m

E) 0,39 m
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Perfil em aço

O perfil de aço apresenta diversas características e uma infinidade de composições que podem permanecer resistentes por meio da conexão de diferentes peças mediante conexões.

A esse respeito, assinale a alternativa que indica corretamente o elemento de conexão de perfis de aço que oferece a possibilidade de união das peças de uma moldura de aço como se fosse um todo monolítico.

A) Rebite.

B) Pinos de alta resistência.

C) Pinos de aço-carbono.

D) Pinos de controle de tensão.

E) Solda.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Noções de licitação pública

Tipo de licitação é a forma como se dará o julgamento das propostas e a escolha do vencedor.

Em relação aos tipos e às modalidades da licitação pública, leia com atenção a afirmativa a seguir:

O _________ será sempre pelo tipo ____________; o __________ será sempre pelo tipo _____________; o _____________ não será por nenhum tipo; já as demais modalidades podem ser por qualquer tipo, sendo a regra o menor preço.

Marque a alternativa que preenche as lacunas de forma correta.

A) leilão - menor preço - pregão - maior lance ou oferta - concorrência.

B) pregão - menor preço - leilão - maior lance ou oferta - concurso.

C) concurso - melhor técnica - leilão - técnica e preço - convite.

D) pregão - técnica e preço - leilão - maior lance ou oferta - concurso.

E) concurso - menor preço - leilão maior lance ou oferta - convite.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Equação da continuidade

Um Boeing 747 (figura) tem em torno de 500 m2 de área alar (área total das duas asas). Considere que ele está se movendo a 230 m/s em relação ao ar. As linhas de fluxo acima da asa estão comprimidas em 80% de sua área original. As linhas de fluxo abaixo da asa não estão comprimidas. Calcule a força resultante devido à pressão à qual o Boeing está submetido. Considere a densidade do ar na altitude em que o Boeing está voando ρar = 0,40 kg/m3.



A) 1,27 x 106 N

B) 5,91 kN

C) 2,98 x 106 N

D) 2,20 x 106 N

E) 3,48 x 106 N
Verificar Resposta Estudar Cards Todas as Questões

Java ::: Coleções (Collections) ::: Vector

Como usar o método add() para adicionar um elemento no início de um objeto da classe Vector da linguagem Java

Quantidade de visualizações: 9886 vezes
Nesta dica mostrarei como é possível adicionar novos elementos no início de um Vector usando o método add() dessa classe. A assinatura que usaremos é:

public void add(int index, E element)


Veja que o método recebe o índice indicando a posição na qual o novo elemento será inserido e o elemento propriamente dito.

Veja o código 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 java.util.*;
 
public class Estudos{ 
  public static void main(String args[]){ 
    // Cria um Vector
    Vector<Integer> valores = new Vector<Integer>();
 
    // adiciona itens ao Vector
    valores.addElement(54);
    valores.addElement(87);
    valores.addElement(6);
 
    // Lista os itens do Vector
    System.out.println("Elementos no Vector: ");
    for(Enumeration e = valores.elements(); 
           e.hasMoreElements();){
      int valor = (Integer)e.nextElement();
      System.out.print(valor + "  ");
    }
 
    // Adiciona um elemento no início
    valores.add(0, 10);
    System.out.println();
 
    // Lista os itens do Vector
    System.out.println("\nElementos no Vector: ");
    for(Enumeration e = valores.elements(); 
           e.hasMoreElements();){
      int valor = (Integer)e.nextElement();
      System.out.print(valor + "  ");
    }    
  } 
}

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

Elementos no Vector:
54 87 6

Elementos no Vector:
10 54 87 6

É importante observar que as classes java.util.Vector e java.util.Hashtable foram marcadas como obsoletas a partir do JDK1.2 e provavelmente não serão usadas em novos desenvolvimentos.


Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout

Como adicionar espaço entre o GridBagLayout do Java Swing e as bordas da janela JFrame usando o método setBorder()

Quantidade de visualizações: 11139 vezes
Se o GridBagLayout for o gerenciador de layout principal da janela, pode ser interessante adicionar algum espaço (padding) entre ele e as bordas da janela JFrame ou JDialog. Isso pode ser feito obtendo-se uma referência ao painel de conteúdo (ContentPane) da JFrame e adicionando uma borda EmptyBorder. Veja como isso é feito no trecho de código abaixo:

----------------------------------------------------------------------
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 javax.swing.border.*;
import java.awt.*;

public class Estudos extends JFrame{
  public Estudos(){
    super("Como usar a classe GridBagLayout");

    // define o layout
    setLayout(new GridBagLayout());
    
    // define uma borda para aumentar o espaço
    // entre as bordas da janela e o gerenciador
    // de layout
    ((JComponent)getContentPane()).setBorder(
       new EmptyBorder(10, 10, 10, 10));

    // cria o GridBagConstraints
    GridBagConstraints gbc = new GridBagConstraints();

    // controla o espaço entre os componentes
    // e as linhas do GridBagLayout.
    // aqui nós definimos 5 pixels para os
    // lados de cima, esquerda, inferior e direita
    gbc.insets = new Insets(5, 5, 5, 5);

    // adiciona componentes à janela
    gbc.gridy = 0; // linha
    gbc.gridx = 0; // coluna
    add(new JButton("Botão 1"), gbc);

    gbc.gridy = 0; // linha
    gbc.gridx = 1; // coluna
    add(new JButton("Botão 2"), gbc);

    gbc.gridy = 0; // linha
    gbc.gridx = 2; // coluna
    add(new JButton("Botão 3"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 0; // coluna
    add(new JButton("Botão 4"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 1; // coluna
    add(new JButton("Botão 5"), gbc);

    gbc.gridy = 1; // linha
    gbc.gridx = 2; // coluna
    add(new JButton("Botão 6"), gbc);
    
    //setSize(350, 150);
    pack(); // ajusta o tamanho da janela ao
    // dos componentes
    setVisible(true);    
  }

  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

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




Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java

Sistema para Biblioteca usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão console

Quantidade de visualizações: 14100 vezes
Sistema para Gestão de Biblioteca usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão console

Controle de Biblioteca - Sobre este projeto Java



Nesta dica apresento a idéia de um Controle de Gestão de Biblioteca em Java usando Programação Orientada a Objetos. Trata-se de um programa com código fonte em duas versões console.

Na primeira versão temos os dados sendo gerenciados por objetos ArrayList. Na segunda versão nós tiramos proveito dos métodos dos métodos readObject() e writeObject() e da interface Serializable para implementar a serialização de objetos em Java. Dessa forma, os dados do sistema podem ser salvos e carregados todas as vezes que o sistema for iniciado.

Um Controle de Gestão de Biblioteca é um projeto ideal para dominar a programação orientada a objetos em Java, além de permitir colocar em prática várias coisas que estudamos na linguagem e não temos a oportunidade de implementar. Assim, este código, se bem estudado e bem entendido, pode render um controle de biblioteca pronto para ser vendido no mercado ou implementado em sua própria escola ou faculdade. Basta conectar as funcionalidades das classes a um banco de dados tal como o MySQL e adicionar mais alguns pequenos detalhes.

O Diagrama de Classes Java

Antes de falarmos mais sobre o projeto do Sistema de Biblioteca, dê uma boa olhada no seu diagrama de classes:



Como a aplicação está estruturada?

Como podemos ver no diagrama de classes, todo o controle do sistema é feito a partir da classe Biblioteca, que contém objetos da classe ArrayList para guardar objetos das classes Usuario, Autor, Editora, Livro, Emprestimo e Multa.

O relacionamento entre os objetos das classes envolvidas está bem definido no código fonte, com comentários e menus individuais para o gerenciamento de cada parte que compõe o controle de biblioteca apresentado.

Um empréstimo envolve um livro e um usuário, e pode gerar uma multa caso a devolução seja feita fora do prazo. A multa é gerada somente na devolução. Em sistemas reais, o usuário não pode fazer uma nova locação caso a multa não seja paga. Deixamos como sugestão e desafio, essa implementação no código. No entanto, já fizemos todo o restante do cálculo para você, ou seja, fizemos a diferença entre a data do empréstimo e sua devolução e geramos a multa, se houver, já com o devido valor a ser pago.

Um livro está relacionado a um autor e a uma editora. Inicialmente o livro é cadastrado como disponível. Porém, esse status é alterado para indisponível quando ele está envolvido em um empréstimo, e novamente disponível quando é feita a devolução.

Tudo isso é feito por meio de vários menus de opções, como mostro a seguir.

As opções de menu para o gerencimento do sistema da biblioteca

O menu principal foi escrito usando-se o seguinte código:

// método que exibe o menu principal do sistema
public void menuPrincipal(){
  Scanner entrada = new Scanner(System.in);
    
  while(true){  
    limparTela();
    System.out.println("\n:: B I B L I O T E C A ::\n");
    System.out.println("Bem-vindo(a) ao sistem. 
      Escolha a opção desejada");
    System.out.println("1 - Livros");
    System.out.println("2 - Autores");
    System.out.println("3 - Editoras");
    System.out.println("4 - Usuários");
    System.out.println("5 - Empréstimos");
    System.out.println("6 - Multas");
    System.out.println("7 - Sair");
    System.out.print("Sua opção: ");
    // lê a opção do usuário 
    int opcao = Integer.parseInt(entrada.nextLine()); 
    
    switch(opcao){
      case 1:
        // chama o menu de gerenciamento de livros
        menuGerenciarLivros(); 
        break;
      
      case 2:
        // chama o menu de gerenciamento de autores
        menuGerenciarAutores(); 
        break;
      
      case 3:
        // chama o menu de gerenciamento de editoras
        menuGerenciarEditoras();
        break;
      
      case 4:
        // chama o menu de gerenciamento de usuários
        menuGerenciarUsuarios(); 
        break;
      
      case 5:
        // chama o menu de gerenciamento de emprestimos
        menuGerenciarEmprestimos();
        break;
        
      case 6:
        // chama o menu de gerenciamento de multas
        menuGerenciarMultas();
        break;
      
      case 7:
        System.out.println("\nObrigado por usar o 
          Sistema de Biblioteca\n");  
        System.exit(0);
    }
  }
}


Note que cada case do switch do menu principal chama um método que será responsável por exibir um menu individual para o gerencimento da classe correspondente.

Veja, por exemplo, o menu para cadastrar um novo usuário na biblioteca:

// menu para cadatrar, listar, pesquisar, excluir 
// e atualizar os usuários da biblioteca
public int menuGerenciarUsuarios(){ 
  Usuario temp; // serve para várias operações neste menu
  // serve para as pesquisas dos usuários
  String pesquisaUsuario;
  Scanner entrada = new Scanner(System.in);
    
  // mostra o menu de forma repetitiva até o usuário 
  // usar a opção de sair
  while(true){
    // tire caso não funcionar no seu sistema operacional
    limparTela();
    System.out.println("\n:: G E R E N C I A R   U S U Á R I O S ::\n");
    System.out.println("Escolha a opção desejada");
    System.out.println("1 - Novo Usuário");
    System.out.println("2 - Listar Usuários");
    System.out.println("3 - Pesquisar Usuário");
    System.out.println("4 - Excluir Usuário");
    System.out.println("5 - Atualizar Usuário");
    System.out.println("6 - Voltar Menu Anterior");
    System.out.print("Sua opção: ");
    // lê a opção do usuário
    int opcao = Integer.parseInt(entrada.nextLine()); 
    
    switch(opcao){
      case 1: // vamos cadastrar um novo usuário
        System.out.print("\nNome: ");
        String nomeUsuario = entrada.nextLine();
        System.out.print("Idade: ");
        int idadeUsuario = Integer.parseInt(entrada.nextLine());
        System.out.print("Sexo: ");
        char sexoUsuario = entrada.nextLine().charAt(0);
        
        // vamos incrementar o contador de usuários
        Usuario.contadorUsuarios++;
        
        // agora vamos criar um novo objeto da classe Usuario
        Usuario u = new Usuario(Usuario.contadorUsuarios,
          nomeUsuario, idadeUsuario, sexoUsuario);
        // e o adicionamos no ArrayList de usuários
        usuarios.add(u);
        
        // e finalmente mostramos uma mensagem de sucesso.
        System.out.println("\nO usuário foi cadastrado com sucesso");
        salvarDadosArquivo(); // salva os dados no arquivo
        
        break;
        ... 


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 usuários, livros, editoras, autores e empréstimos nós quisermos.

Dessa forma, veja, por exemplo, o trecho de código que registra um novo empréstimo:

case 1: // vamos cadastrar um novo empréstimmo
  // para registrar um novo empréstimo nós precisamos 
  // de um usuário
  // o usuário que será relacionado a este empréstimo
  Usuario usuario = null;
  while(usuario == null){
    System.out.print("\nInforme o id ou nome do usuário: ");
    String pesquisaUsuario = entrada.nextLine();
    // chamamos o método que pesquisa o usuario
    usuario = pesquisarUsuario(pesquisaUsuario);
    if(usuario == null){ // usuario não encotrado
      System.out.print("\nUsuário não 
       encontrado.\n\nDigite 1 para pesquisar 
       novamente ou 2 para voltar ao menu anterior: ");
      int opcaoTemp = Integer.parseInt(entrada.nextLine());
      if(opcaoTemp == 2){
        return 1; // saímos daqui e voltamos para o menu anterior  
      }
    }
  }
  System.out.println("Usuário selecionado: " + usuario.getNome());
  // fim para registrar um novo empréstimo nós 
  // precisamos de um usuário
          
  // para registrar um novo empréstimo nós precisamos 
  // de um livro
  Livro livro = null; // o livro que será relacionado 
  // a este empréstimo
  while(livro == null){
    System.out.print("Informe o id, título ou ISBN do livro: ");
    String pesquisaLivro = entrada.nextLine();
    // chamamos o método que pesquisa o livro
    livro = pesquisarLivro(pesquisaLivro);
    // livro não encontrado ou indisponível
    if((livro == null) || (!livro.isDisponivel())){
      System.out.print("\nLivro não encontrado 
       ou indisponível.\n\nDigite 1 para 
       pesquisar novamente ou 2 para voltar ao 
       menu anterior: ");
      int opcaoTemp = Integer.parseInt(entrada.nextLine());
      if(opcaoTemp == 2){
        return 1; // saímos daqui e voltamos para o menu anterior  
      }
    }
  }
  System.out.println("Livro selecionado: " + livro.getTitulo());
  // fim para cadastrar um novo empréstimo nós 
  // precisamos de um livro
 
  try{          
    System.out.print("Data do Empréstimo: ");
    String dataEmprestimo = entrada.nextLine();
    Date dataEmprestimoDate = 
      new SimpleDateFormat("dd/MM/yyyy").parse(dataEmprestimo);
    System.out.print("Data de Devolução: ");
    String dataDevolucao = entrada.nextLine();
    Date dataDevolucaoDate = 
      new SimpleDateFormat("dd/MM/yyyy").parse(dataDevolucao);
          
    // a data de devolução é menor que a data de empréstimo?
    if(dataDevolucaoDate.getTime() <= dataEmprestimoDate.getTime()){
      System.out.println("\nA data de devolução 
        deve ser maior que a data de empréstimo.\n");
    }
    else{
      // vamos incrementar o contador de empréstimos
      Emprestimo.contadorEmprestimos++;
        
      // vamos marcar o livro escolhido como indisponível
      livro.setDisponivel(false);
              
      // agora vamos criar um novo objeto da classe Emprestimo
      Emprestimo emprestimo = new Emprestimo(usuario,
        livro, Emprestimo.contadorEmprestimos, 
        dataEmprestimoDate, dataDevolucaoDate, 
        null, false);
      // e o adicionamos no ArrayList de empréstimos
      emprestimos.add(emprestimo);
        
      // e finalmente mostramos uma mensagem de sucesso.
      System.out.println("\nO empréstimo foi registrado com sucesso");
      salvarDadosArquivo(); // salva os dados no arquivo
    }
  }
  catch(ParseException e){
    System.out.println("\nAs datas informadas são inválidas.\n");
  }
            
  break;


Note que este trecho de código é parte do case da opção Novo Empréstimo do menu Gerenciar Empréstimos. Veja como usamos uma variável estática contadorEmprestimos da classe Emprestimo para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada empréstimo da biblioteca.

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.

Como posso obter este código fonte?

O código fonte desta aplicação é fornecido em duas versões:

1) SBIBLIOJCNB-A - Sistema de Gestão de Biblioteca em Java com Código Fonte Versão Console - NetBeans IDE ou Eclipse.

2) SBIBLIOJCNB-B - Sistema de Gestão de Biblioteca 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 ou Eclpse.

Para adquirir, entre em contato conosco usando o WhatsApp ou e-mail indicados na lateral do site. Podemos combinar alterações e a adição de novas funcionalidades.

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

Linguagens Mais Populares

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

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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


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