Skip to content

Latest commit

 

History

History
242 lines (184 loc) · 14.7 KB

README.md

File metadata and controls

242 lines (184 loc) · 14.7 KB

Projeto de Programação Orientada a Objetos | Java | Layout AWT | GUI Swing

📃 DESCRIÇÃO DOS PROJETOS

Calculadora Idade

  • O código cria uma aplicação gráfica simples para conversão de idades com base nas datas inseridas.
  • A interface é intuitiva, com campos de entrada para valores de data, e botão para calcular.
  • Além do Layout que foi o principal objeto de estudo, também conseguimos deixar a calculadora funcional, usando funções e o tryCatch para fazer a validação.
  • Relatório Calculadora Idade

Calculadora IMC

  • O código cria uma aplicação gráfica simples para cálculo do IMC (Índice de Massa Corporal).
  • A interface é intuitiva, com campos de entrada para valores em Metros (Altura) e KG (Peso), além do botaõ de calcular.
  • Além do Layout que foi o principal objeto de estudo, também conseguimos deixar a calculadora funcional, usando funções e o tryCatch para fazer a validação.
  • Relatório Calculadora IMC

Calculadora Moeda

  • O código cria uma aplicação gráfica simples para conversão de valores entre Dólar Americano e Real Brasileiro.
  • A interface é intuitiva, com campos de entrada para valores em Dólar e em Real, botões para calcular e resetar.
  • Além do Layout que foi o principal objeto de estudo, também conseguimos deixar a calculadora funcional, usando funções e o tryCatch para fazer a validação.
  • Relatório Calculadora Moeda

⚙️ TIPOS DE LAYOUTS

GridLayout:

  • Organização em Grade:
    • Facilita a organização dos componentes em um número determinado de linhas e colunas, o que é útil para interfaces de usuário que exigem uma disposição tabular.
  • Alinhamento Uniforme:
    • Garante que todos os componentes tenham o mesmo tamanho, criando uma aparência uniforme e organizada.
  • Responsividade:
    • Os componentes se ajustam automaticamente à medida que a janela é redimensionada, mantendo a estrutura de grade.
  • Configuração Flexível:
    • Permite que você defina o número de linhas e colunas na grade.
  • Ordem não se altera:
    • Os componentes mantêm sua posição relativa mesmo quando a janela é redimensionada.

FLowLayout:

  • Organização Simples:
    • Organiza os componentes em uma linha, adicionando-os da esquerda para a direita.
  • Adaptação em Diferentes Telas:
    • Os componentes são dispostos em linha, mas a altura da linha é ajustada automaticamente para acomodar os componentes adicionados.
  • Responsividade:
    • Se a janela for redimensionada, os componentes manterão sua ordem.
  • Solução Rápida:
    • É útil quando você precisa criar interfaces rapidamente sem se preocupar com o posicionamento preciso de cada componente.
  • Alinhamento Personalizado:
    • Embora os componentes sejam adicionados da esquerda para a direita, você ainda pode ajustar o alinhamento vertical ou horizontal de cada componente.

BorderLayout:

  • Fácilidade de Uso:
    • Basta adicionar componentes à janela e definir a direção.
  • Organização Hierárquica:
    • É útil quando você tem componentes que são de importância hierárquica diferente.
  • Responsividade:
    • Se ajusta automaticamente quando a janela é redimensionada, mantendo a hierarquia entre os componentes.
  • Janelas Principais:
    • É frequentemente usado para janelas principais ou painéis de aplicativos.
  • Alinhamento Automático:
    • Os componentes são alinhados automaticamente dentro de suas regiões.
  • Janelas Maximizadas:
    • É eficaz quando a janela é maximizada, pois mantém a organização das regiões.

💡 OUTROS TIPOS DE LAYOUT

GridBagLayout:

  • O GridBagLayout é um layout altamente flexível e poderoso.
  • Ele permite posicionar os componentes em linhas e colunas, mas com grande controle sobre a disposição e o tamanho de cada componente.
  • É particularmente útil para interfaces complexas e detalhadas.

SpringLayout:

  • O SpringLayout é um layout que utiliza molas (springs) para definir as relações de posicionamento entre os componentes.
  • Ele oferece um alto nível de controle sobre o posicionamento e o redimensionamento dos componentes, sendo adequado para interfaces que requerem ajustes precisos.

MigLayout:

  • O MigLayout é um layout de terceiros muito popular que combina simplicidade com uma grande capacidade de personalização.
  • Ele se adapta bem a uma ampla variedade de interfaces e oferece uma sintaxe expressiva para definir a disposição dos componentes.

AbsoluteLayout:

  • O AbsoluteLayout permite posicionar os componentes em coordenadas específicas, fornecendo um controle absoluto sobre a posição de cada elemento.
  • Embora ofereça precisão no posicionamento, pode ser menos flexível em termos de adaptação a diferentes tamanhos de tela.

🎯 COMPARAÇÃO DOS LAYOUTS

  • ORGANIZAÇÃO:

    • GridLayout: Componentes são organizados em uma grade com um número fixo de linhas e colunas.
    • FlowLayout: Componentes são dispostos em linha, adicionando-os da esquerda para a direita. Quando a linha fica cheia, os componentes continuam na próxima linha.
    • BorderLayout: Divide a área em cinco regiões: norte, sul, leste, oeste e centro. Cada componente é adicionado a uma dessas regiões.
  • FLEXIBILIDADE:

    • GridLayout: Permite definir o número de linhas e colunas na grade.
    • FlowLayout: ...
    • BorderLayout: Permite definir as regiões para disposição dos componentes.
  • ADAPTAÇÃO | RESPONSIVIDADE :

    • GridLayout: Os componentes se ajustam automaticamente à medida que a janela é redimensionada.
    • FlowLayout: A altura da linha é ajustada automaticamente para acomodar os componentes adicionados.
    • BorderLayout: Mantém a organização mesmo quando a janela é redimensionada.
  • ALINHAMENTO:

    • GridLayout: Componentes são todos do mesmo tamanho e são alinhados uniformemente.
    • FlowLayout: Pode haver variações no alinhamento horizontal ou vertical.
    • BorderLayout: Componentes em cada região mantêm o alinhamento automático, mas as regiões podem ter diferentes tamanhos.
  • CONCLUSÃO:

    • GridLayout:
      • Ótimo para organização tabular e uniforme de componentes, especialmente útil para exibir dados em uma estrutura de tabela.
    • FlowLayout:
      • Simples e eficaz para organizar componentes em linha, sendo útil em situações onde a organização linear é suficiente.
    • BorderLayout:
      • Excelente para janelas principais onde diferentes áreas têm diferentes níveis de importância.

Relatório Calculadora Moedas 💰

DETALHES DO CÓDIGO ⚙️

  • Bibliotecas:
    • JavaSwing (javax.swing.*)
    • JavaAWT (java.awt.*)
  • Layouts:
    • GridLayout
    • FlowLayout
    • BorderLayout
  • Classe:
    • Calculadora_idade
    • extends JPanel - a classe Calculadora_idade herda os comportamentos e propriedades de JPanel que é um componente da biblioteca JavaSwing e serve como contêiner para a organização dos componentes.
  • Painéis | Contêiner:
    • painelPrincipal:
    • painelInput:
    • painelOutput:
    • painelBotao:
  • Componentes:
    • JLabel
    • JTextField
    • JButton
  • Estilização:
    • setfont
    • setForeground
    • setBackground
    • setHorizontalAlignment
    • setVerticalAlignment
  • Botão Calcular:
    • É adicionado um ActionListener ao botão "Calcular". Quando o botão é pressionado, o código do método actionPerformed é executado.
    • O código dentro deste método lida com a conversão de valores inseridos pelo usuário, realiza o cálculo e exibe o resultado.
  • Botão Resetar:
    • Similar ao botão "Calcular", o botão "Resetar" também tem um ActionListener associado.
    • Quando pressionado, ele limpa os campos de input e output.
  • Exceptions | try-catch:
    • Dentro do bloco try-catch, o código lida com a possibilidade de o usuário inserir valores inválidos (não numéricos).
  • Organização:
    • Para organizar melhor o código decidimos organizar da seguinte maneira:
      • Criação dos painéis.
      • Criação dos Componentes.
        • Estilização dos componentes.
      • Criação dos Botões.
        • Estilização dos Botões.
      • Adição dos elementos aos Painéis.
      • Funções para Calcular.
    • Além disso o código todo está comentado para melhor entendimento e compreensão no momento de debugar.

Relatório Calculadora Idade 📅

DETALHES DO CÓDIGO ⚙️

Introdução

A Calculadora IMC em Java é uma aplicação gráfica desenvolvida para calcular o Índice de Massa Corporal (IMC) com base no peso e altura fornecidos pelo usuário. Este relatório descreverá a estrutura do código, suas funcionalidades e as principais dificuldades enfrentadas durante o desenvolvimento.

Estrutura do Código

O código está organizado de forma modular, utilizando a classe Calculadora_IMC que herda de JPanel e representa a interface gráfica da calculadora. Ele é composto por:

  • Rótulos (JLabel): alturaUsuario, pesoUsuario, resultadoIMC e três rótulos adicionais para exibir mensagens sobre a classificação do IMC.
  • Campos de Texto (JTextField): campoAltura e campoPeso para entrada de dados, e campoResultado para exibir o resultado do cálculo.
  • Botão (JButton): botaoCalcular para iniciar o cálculo do IMC.

Funcionalidades

A aplicação possui as seguintes funcionalidades:

  1. O usuário pode inserir sua altura (em metros) e peso (em quilogramas) nos campos de texto correspondentes.
  2. Ao pressionar o botão "Calcular", o programa verifica se os valores são válidos e realiza o cálculo do IMC.
  3. Com base no resultado do cálculo, o programa exibe o IMC calculado e uma mensagem indicando se o usuário está abaixo do peso, no peso ideal ou acima do peso.
  4. As mensagens de classificação são exibidas com cores diferentes para facilitar a identificação.

Principais Dificuldades

Durante o desenvolvimento, algumas das principais dificuldades encontradas foram:

  1. Manipulação de Componentes Gráficos: Garantir que os componentes gráficos fossem adicionados corretamente aos painéis e que estivessem dispostos de forma adequada.
  2. Tratamento de Eventos: Implementar a lógica de cálculo do IMC e a exibição das mensagens de classificação com base nos valores fornecidos pelo usuário.
  3. Controle de Exceções: Lidar com possíveis exceções que podem ocorrer ao tentar converter os valores de texto para números.

Conclusão

A Calculadora IMC em Java proporciona uma interface simples e interativa para calcular o Índice de Massa Corporal. Ela foi desenvolvida de forma modular e utiliza componentes gráficos para proporcionar uma experiência amigável ao usuário.

Para futuras melhorias, pode-se considerar a adição de validações adicionais e aprimoramentos na interface gráfica para proporcionar uma experiência ainda mais intuitiva.

Relatório Calculadora IMC ⚖️

DETALHES DO CÓDIGO ⚙️

Layouts Utilizados

Utilizamos em uma aplicação de calculadora de idade desenvolvida em Java Swing, dois dos três layouts indicados. Avaliamos esses layouts com base em critérios objetivos e subjetivos para determinar sua adequação e eficácia na organização da interface do usuário.

BorderLayout:

Usabilidade: O BorderLayout foi considerado uma escolha adequada para os componentes principais da aplicação. Ele organiza os componentes em cinco áreas predefinidas: norte, sul, leste, oeste e centro. Isso ajuda a criar uma interface de usuário intuitiva, com o campo de entrada de data de nascimento na parte superior, o botão "Calcular" no centro e a exibição do resultado na parte inferior. Ajustabilidade: Embora o BorderLayout tenha limitações em termos de flexibilidade, para esta aplicação, a disposição dos elementos se encaixa bem nas áreas predefinidas, tornando-o ajustável o suficiente. Eficiência de Código: A implementação do BorderLayout é clara e direta, sem complexidade excessiva. Isso contribui para a eficiência do código. Estética: O uso do BorderLayout resulta em uma interface de usuário organizada e limpa. A disposição dos componentes é lógica e agradável esteticamente.

FlowLayout:

Usabilidade: O FlowLayout não é apropriado para a organização dos componentes principais desta aplicação. Ele coloca os componentes em uma única linha, o que não se encaixa bem para o campo de entrada de data e o botão "Calcular". Contudo, acreditamos que tenha sido uma boa escolha, ja que não foram criados muitos componentes. Ajustabilidade: O FlowLayout permite que os componentes fluam naturalmente, mas não é ideal para organizar elementos em várias linhas ou colunas, o que é necessário neste caso. Eficiência de Código: Embora o código que utiliza o FlowLayout seja eficiente, a escolha desse layout não é apropriada para a interface principal. Estética: O FlowLayout não resulta em uma estética agradável para a organização dos componentes principais.

GridLayout:

Usabilidade: O GridLayout é apropriado para a exibição do resultado da idade, pois organiza os componentes em uma grade de células de tamanho igual. Isso ajuda a criar uma exibição organizada e fácil de ler. Porém, por se tratar de ua aplicação simples, optamos pelo FlowLayout. Ajustabilidade: O GridLayout é adequado para exibir resultados, pois os componentes se ajustam facilmente à grade, adaptando-se ao tamanho da janela. Eficiência de Código: A implementação do GridLayout é simples e eficiente, adequada para a finalidade de exibir o resultado da idade. Estética: O GridLayout é esteticamente apropriado para a exibição do resultado, pois organiza o texto de forma organizada e uniforme.

Conclusão:

Com base na análise dos critérios objetivos e subjetivos, concluímos que o BorderLayout é a escolha mais apropriada para organizar os componentes principais da calculadora de idade, enquanto o GridLayout é adequado para a exibição do resultado da idade. Ambos os layouts contribuem para uma interface de usuário funcional, organizada e esteticamente agradável, atendendo às necessidades do aplicativo.

🙋 AUTORES

  • Luigi Souza
  • Rafael de Sousa Moura
  • Vinícius Granço Feitoza