Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Classes e Componentes ::: JList

Exemplo completo de como adicionar JCheckBoxes como itens de uma JList e retornar os itens marcados

Quantidade de visualizações: 12004 vezes
/*
 Este exemplo mostra como criar uma JList
 contendo JCheckBoxes. Aprenda a marcar os
 itens e obter quais itens estão marcados.
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class Estudos extends JFrame{
  JList lista;  

  public Estudos() {
    super("A classe JList");
    
    Container c = getContentPane();
    c.setLayout(new FlowLayout(FlowLayout.LEFT));

    // Cria a JList
    lista = new JList();

    // Define o renderizador de células
    lista.setCellRenderer(new CheckBoxCellRenderer());

    // Define os valores da lista
    Object[] cbArray = new Object[4];
    cbArray[0] = new JCheckBox("Goiânia");
    cbArray[1] = new JCheckBox("Brasília");
    cbArray[2] = new JCheckBox("Barra do Garças");
    cbArray[3] = new JCheckBox("Curitiba");
 
    // Atribue os itens à lista
    lista.setListData(cbArray);
    
    // Define a seleção única para a lista
    lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    // Aqui nós permitimos que as checkboxes sejam marcadas
    // ou desmarcadas com a barra de espaço
    lista.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e){
        if(e.getKeyCode() == KeyEvent.VK_SPACE){
          int index = lista.getSelectedIndex();
          if(index != -1){
            JCheckBox checkbox = 
              (JCheckBox) lista.getModel().getElementAt(index);
            checkbox.setSelected(!checkbox.isSelected());
            repaint();
          }
        }
      }
    });

    // Aqui nós permitimos que as checkboxes sejam marcadas
    // ou desmarcadas com o mouse
    lista.addMouseListener(new MouseAdapter(){
      public void mousePressed(MouseEvent e){
        int index = lista.locationToIndex(e.getPoint());
        if(index != -1){
          JCheckBox checkbox = 
            (JCheckBox) lista.getModel().getElementAt(index);
          checkbox.setSelected(!checkbox.isSelected());
          repaint();
        }
      }
    });

    // Um botão que permite obter os itens marcados
    JButton btn = new JButton("Obter itens marcados");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          String itens = "";

          for(int i = 0; i < lista.getModel().getSize(); i++){
            JCheckBox checkbox = 
                (JCheckBox) lista.getModel().getElementAt(i);
              if(checkbox.isSelected())
                itens += "Item com índice " + i + 
                  " está marcado\n";
              else
                itens += "Item com índice " + i + 
                  " está desmarcado\n";
          }          

          JOptionPane.showMessageDialog(null, 
            itens);
        }
      }
    );

    // Adiciona a lista à janela
    c.add(new JScrollPane(lista));

    // Adiciona o botão à janela
    c.add(btn);  

    setSize(350, 250);
    setVisible(true);
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

// Classe personalizada que permite que os itens
// da lista sejam exibidos como JCheckBoxes
class CheckBoxCellRenderer implements ListCellRenderer{
  Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);  

  public Component getListCellRendererComponent(
       JList list, Object value, int index,
       boolean isSelected, boolean cellHasFocus){
    JCheckBox checkbox = (JCheckBox) value;
    checkbox.setBackground(isSelected ? 
      list.getSelectionBackground() : list.getBackground());
    checkbox.setForeground(isSelected ? 
      list.getSelectionForeground() : list.getForeground());
 
    checkbox.setEnabled(list.isEnabled());
    checkbox.setFont(list.getFont());
    checkbox.setFocusPainted(false);
 
    checkbox.setBorderPainted(true);
    checkbox.setBorder(isSelected ? UIManager.getBorder(
       "List.focusCellHighlightBorder") : noFocusBorder);
 
    return checkbox;
  }
}


Link para compartilhar na Internet ou com seus amigos:

Python ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o coeficiente angular de uma reta em Python dados dois pontos no plano cartesiano

Quantidade de visualizações: 2802 vezes
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x.

Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano:



Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é:

\[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \]

Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente.

Veja agora o trecho de código na linguagem Python que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:

# vamos importar o módulo Math
import math as math

def main():
  # x e y do primeiro ponto
  x1 = float(input("Coordenada x do primeiro ponto: "))
  y1 = float(input("Coordenada y do primeiro ponto: "))

  # x e y do segundo ponto
  x2 = float(input("Coordenada x do segundo ponto: "))
  y2 = float(input("Coordenada y do segundo ponto: "))

  # agora vamos calcular o coeficiente angular
  m = (y2 - y1) / (x2 - x1)

  # e mostramos o resultado
  print("O coeficiente angular é: %f\n\n" % m)
  
if __name__== "__main__":
  main()

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

Coordenada x do primeiro ponto: 3
Coordenada y do primeiro ponto: 6
Coordenada x do segundo ponto: 9
Coordenada y do segundo ponto: 10
O coeficiente angular é: 0.666667

Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):

# vamos importar o módulo Math
import math as math

def main():
  # x e y do primeiro ponto
  x1 = float(input("Coordenada x do primeiro ponto: "))
  y1 = float(input("Coordenada y do primeiro ponto: "))

  # x e y do segundo ponto
  x2 = float(input("Coordenada x do segundo ponto: "))
  y2 = float(input("Coordenada y do segundo ponto: "))

  # vamos obter o comprimento do cateto oposto
  cateto_oposto = y2 - y1
  # e agora o cateto adjascente
  cateto_adjascente = x2 - x1
  # vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
  # (em radianos, não se esqueça)
  tetha = math.atan2(cateto_oposto, cateto_adjascente)
  # e finalmente usamos a tangente desse ângulo para calcular
  # o coeficiente angular
  tangente = math.tan(tetha)

  # e mostramos o resultado
  print("O coeficiente angular é: %f\n\n" % tangente)
  
if __name__== "__main__":
  main()

Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta:

1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0;

2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0;

3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0).

4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe.


C# ::: Dicas & Truques ::: Tipos de Dados

Como usar os tipos de dados byte e sbyte da linguagem C#

Quantidade de visualizações: 14629 vezes
O tipo de dados byte é usado quando queremos armazenar valores inteiros na faixa de 0 a 255, ou seja, valores inteiros apenas positivos. Veja um exemplo de declaração e definição de uma variável deste tipo:

// uma variável do tipo byte
byte valor = 45;

O tipo byte (que possui 8 bits não sinalizados) é um apelido C# para o tipo System.Byte da plataforma .NET. Note que quando inicializamos uma variável do tipo byte com um literal inteiro, este valor é convertido implicitamente de int para byte. Se o valor sendo definido for maior que a faixa permitida, o programa não compilará. Veja:

// valor fora da faixa suportada pelo tipo byte
byte valor = 290;

Ao tentarmos compilar esta linha teremos o seguinte erro:

Constant value '290' cannot be converted to a 'byte'

Quando se trata de conversões implícitas, um valor do tipo byte pode ser convertido, sem a necessidade de cast, para os tipos short, ushort, int, uint, long, ulong, float, double ou decimal. Veja:

// variável do tipo byte
byte valor = 28;

// variável do tipo float
float valor2 = valor;

O caminho oposto não é verdade, ou seja, não é possível atribuir uma variável do tipo short à uma variável do tipo byte. Veja:

// variável do tipo short
short valor = 50;

// variável do tipo byte
byte valor2 = valor;

// mensagem de erro de compilação
Cannot implicitly convert type 'short' to 'byte'. 
An explicit conversion exists (are you missing a cast?)

Esta conversão não é possível, ainda que o valor contido na variável do tipo short esteja na faixa aceitável pelo tipo byte. Neste caso, um cast (conversão explícita) se faz necessário:

// variável do tipo short
short valor = 50;

// variável do tipo byte
byte valor2 = (byte)valor;

Resumindo, nenhum outro tipo de dados em C# pode ser convertido para o tipo byte implicitamente. Se quiser fazê-lo, use uma conversão explícita (cast).

O tipo sbyte, por sua vez, pode armazenar valores inteiros na faixa de -128 até 127 e possui 8 bits sinalizados. Este tipo é um apelido C# para o tipo de dados System.SByte da plataforma .NET. Veja um exemplo de seu uso:

static void Main(string[] args){
  // variável do tipo sbyte
  sbyte valor = -45;

  // exibe o resultado
  Console.WriteLine("O valor da variável é: " + valor);

  // pausa o programa
  Console.ReadKey();
}

Note que, a exemplo de byte, o tipo sbyte também é governado por algumas regras de conversão e atribuição de valores literais. Há uma conversão implícita de sbyte para os tipos short, int, long, float, double e decimal. A conversão de qualquer outro tipo de dados para o tipo sbyte só pode ser feita por meio de cast (conversão explícita).


C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em C usando a função cos() do header math.h - Calculadora de cosseno em C

Quantidade de visualizações: 10661 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem C. Esta função, que faz parte do header math.h, recebe um valor numérico double e retorna um valor double, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]){
  // vamos calcular o cosseno de três números
  printf("Cosseno de 0 = %f\n", cos(0));
  printf("Cosseno de 1 = %f\n", cos(1));
  printf("Cosseno de 2 = %f\n", cos(2));
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

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

Cosseno de 0 = 1.000000
Cosseno de 1 = 0.540302
Cosseno de 2 = -0.416147

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




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

Como ordenar os elementos de um vetor C usando a ordenação da bolha (Bubble Sort)

Quantidade de visualizações: 25888 vezes
O método ou algorítmo de ordenação da bolha é uma das técnicas mais simples de ordenação. No entanto, este método não é eficiente, visto que o tempo despendido para sua execução é muito elevado se comparado à outros métodos existentes. Geralmente usamos este método quando queremos ordenar 50 elementos ou menos.

O entendimento deste método é fácil. Se estivermos ordenados os valores do menor para o maior, o método da bolha percorre os elementos da matriz, comparando e movendo o menor valor para a primeira posição da matriz, tal qual bolhas indo para a superfície. Veja um exemplo completo:

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

void bubble_sort(int matriz[], int tam){
  int temp, i, j;

  for(i = 0; i < tam; i++){
    for(j = 0; j < tam; j++){
      if(matriz[i] < matriz[j]){
        temp = matriz[i];
        matriz[i] = matriz[j];
        matriz[j] = temp;
      }
    }
  }
}

int main(int argc, char *argv[])
{
  int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
  int i, tamanho = 9;

  // imprime a matriz sem a ordenação
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }

  // vamos ordenar a matriz
  bubble_sort(valores, tamanho);

  // imprime a matriz ordenada
  puts("\n");
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }

  puts("\n");
  system("pause");
  return 0;
}



PHP ::: Sistemas Completos com Código Fonte ::: Controle de Estoque

Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades

Quantidade de visualizações: 20521 vezes
Como escrever um Controle de Estoque em PHP e MySQL do zero?

Promoção Relâmpago: Este código fonte está disponível gratuitamente para os apoiadores do site. Chama no WhatsApp +55 (062) 98553-6711 para mais detalhes

Sim, é isso mesmo. Você já imaginou o trabalho que dá criar um sistema de Controle de Estoque do zero? Você já pensou na quantidade de horas de trabalho que isso envolve? Não seria bom já ter boa parte do sistema já desenvolvido e você implementar apenas mais algumas poucas funcionalidades? A resposta está no código fonte que desenvolvemos para você nessa seção.

Comece analisando a imagem a seguir:



Nesta tela inicial podemos ver que o sistema é composto de cadastro de usuários, de categorias de produtos, um cadastro de fornecedores e um cadastro de produtos. Tanto o cadastro de produtos quanto o cadastro de fornecedores permitem inserir imagens, incluindo o recorte de imagens, para deixar todas as imagens com o mesmo tamanho e mesma resolução. Isso é importante, pois permite que qualquer usuário com conhecimento básico de informática consiga escolher uma imagem no computador, fazer o upload, recortar e salvar no diretório de imagens do programa.

Na tela inicial podemos ver também a quantidade de produtos e itens cadastrados no estoque, a quantidade de produtos com estoque zero e estoque mínimo, assim como o investimento feito no estoque, o retorno e a margem de lucro.

O sistema é responsivo?

Sim, por ter sido escrito em Bootstrap, todas as páginas do sistema são responsíveis, ou seja, se adaptam à tela do computador e também do celular. Veja:



Neste código fonte nós usamos o Bootstrap 5, mas você conseguirá, com pouca ou nenhuma modificação, rodá-lo nas versões anteriores. No entanto, como estamos o tempo todo melhorando este código para nossos clientes, é bem provável que teremos versões compatíveis com as novas versões do Bootstrap. Ah, e não se preocupe, todo o código Bootstrap, jQuery, Choise.js, Datatable, e outros scripts necessários estão devidamente colocados nos diretórios do sistema, não havendo a necessidade de baixar nada, nem mesmo usar CDNs.

As telas do sistema obedecem um padrão de design?

Sim, o design das telas é bem consistente, exibindo uma combinação de cores muito agradáveis aos olhos. Veja:



Aqui nós o temos o Cadastro de Usuários do Sistema. Como se pode ver, é possível adicionar uma foto para cada usuário, com a opção de recortar a imagem antes de efetuar o download da mesma. Além disso, os usuários possuem níveis de acesso. O usuário admin possui os maiores privilégios. Os demais usuários podem ter permissões para cadastrar, alterar, excluir, ou somente cadastrar, ou somente visualizar, etc.

O sistema mantém um registro de log para cada ação efetuada. Dessa forma, o admin saberá, com apenas um clique, quem cadastrou, alterou ou excluiu dados do sistema.

Como o sistema controla a entrada e saída de produtos no estoque?

Veja a seguinte imagem:



Aqui nós temos o cadastro dos produtos, assim como suas fotos, as quais o usuário poderá recortar antes de fazer o upload. Note que a entrada no estoque solicita um fornecedor e a lista de produtos que farão parte da entrada. Assim que a entrada no estoque é confirmada, o valor de compra de cada produto é atualizado, assim como seu estoque. Na saída de estoque o sistema verifica se há estoque suficiente para as retiradas.

O sistema é fácil de instalar?

Sim, junto com o código fonte nós adicionamos instruções detalhadas de como criar a base de dados e as tabelas do MySQL. Em seguida você só precisa ajustar o servidor, usuário e senha do banco de dados no arquivo config.php, definir o caminho para os uploads das fotos dos usuários, fornecedores e produtos e executar o index.php. E o melhor de tudo: como apenas alguns "copiar-colar" você adiciona mais funcionalidades ao sistema, tornando-o ainda mais útil.

Como posso obter este código fonte?

Para adquirir este código fonte, me chama no WhatsApp +55 (062) 9 8553-6711 ou no e-mail osmar@arquivodecodigos.com.br. Se necessário podemos combinar e faço a instalação na sua máquina ou no seu domínio. Podemos também combinar as alterações ou 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 PHP do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes.

Para quem deseja ver o sistema funcionando antes de fazer o download, colocamos uma demonstração no link abaixo (Usuário "admin" e senha "admin"):

Clique aqui para visualizar a demonstração (Live Demo) desse sistema


Desafios, Exercícios e Algoritmos Resolvidos de PHP

Veja mais Dicas e truques de PHP

Dicas e truques de outras linguagens

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

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

Anúncio Patrocinado
Chat de Sexo - Site para adultso - Maiores de 18 anos. Converse com pessoas de todo o Brasil, de forma discreta e anônima


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