Você está aqui: Java ::: Java Swing - Componentes Visuais ::: JList

Como retornar os índices dos itens selecionados em uma JList de seleção múltipla do Java Swing

Quantidade de visualizações: 7734 vezes
Em outra dica desta seção nós vimos como obter e retornar os valores selecionados em uma JList de múltipla seleção do Java Swing. Agora veremos como retornar os índices dos valores selecionados. Para isso nós vamos usar o método getSelectedIndices(), que retorna um vetor (array) de inteiros.

Note o uso da constante ListSelectionModel.MULTIPLE_INTERVAL_SELECTION fornecida para o método setSelectionMode() da JList para indicar a forma de seleção que estamos usando no exemplo.

Veja 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 estudos;

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

public class Estudos extends JFrame{
  JList lista;  

  public Estudos() {
    super("A classe JList");
    
    Container c = getContentPane();
    c.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    // Cria os itens da lista
    String nomes[] = {"Carlos", "Marcelo", "Fabiana",
      "Carolina", "Osmar"};

    // Cria a JList
    lista = new JList(nomes);
 
    // Define a seleção múltipla para a lista
    lista.setSelectionMode(
      ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    // Um botão que permite obter os índices do itens 
    // selecionados
    JButton btn = new JButton("Obter índices selecionados");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          int[] indices = lista.getSelectedIndices();
          String res = "Índices selecionados:\n";

          for(int i = 0; i < indices.length; i++)
            res += indices[i] + "\n";

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

    // 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);
  }
}

Lembre-se que as teclas Ctrl ou Shift devem estar pressionadas enquanto escolhemos os itens de uma JList de seleção múltipla.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Dicas & Truques ::: Strings e Caracteres

Como comparar strings em Java usando o método equals() da classe String

Quantidade de visualizações: 97 vezes
Em várias ocasiões nós precisamos efetuar a comparação de textos, frases ou palavras em Java. Para isso nós podemos usar o método equals() da classe String. Esta função recebe as duas strings a serem testadas e retorna true se as duas strings forem iguais e false em caso contrário.

Veja um exemplo de seu uso:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// Este exemplo mostra como comparar duas strings
// em Java usando o método equals()

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args) {
    // vamos declarar duas strings
    String s1 = "Gosto de Java";
    String s2 = "Gosto de java";
    
    // e agora vamos verificar se as duas são iguais
    if(s1.equals(s2)){
      System.out.println("As duas strings são iguais");
    }
    else{
      System.out.println("As duas strings são diferentes");
    }
      
    System.exit(0);
  }
}

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

As duas strings são diferentes.

É importante ter em mente que o método equals() diferencia maiúsculas de minúsculas.


Java ::: Dicas & Truques ::: Programação Orientada a Objetos

Como criar e usar métodos estáticos em suas classes Java - Programação Orientada a Objetos em Java - Java OOP

Quantidade de visualizações: 13334 vezes
Como já vimos em outras dicas desta seção, uma classe Java possui propriedades (variáveis) e métodos (funções). Veja a seguinte declaração de uma classe Produto:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

// declaração da classe Produto
public class Produto {
  private String nome;
  private double preco;

  public String getNome() {
    return nome;
  }

  public void setNome(String nome) {
    this.nome = nome;
  }

  public double getPreco() {
    return preco;
  }

  public void setPreco(double preco) {
    this.preco = preco;
  }
}

Aqui cada instância da classe Produto terá suas próprias variáveis nome e preco e os métodos que permitem acesso e alteração destas variáveis também estão disponíveis a cada instância.

Há, porém, situações nas quais gostaríamos que um determinado método estivesse atrelado à classe e não à cada instância individual. Desta forma, é possível chamar um método de uma classe sem a necessidade da criação de instâncias da mesma. O método main() presente em todas as aplicações Java é um bom exemplo deste tipo de método.

Métodos estáticos em Java podem ser criados por meio do uso da palavra-chave static. É comum tais métodos serem declarados com o modificador public, o que os torna acessíveis fora da classe na qual estes foram declarados. Veja um exemplo:

Código para Pessoa.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

// classe Pessoa com duas variáveis privadas e
// um método estático
public class Pessoa {
  private String nome;
  private int idade;

  // um método estático que permite verificar a validade
  // de um número de CPF
  public static boolean isCPFValido(String cpf){
    // alguns cálculos aqui
    return true;
  }
}

Veja agora como podemos chamar o método isCPFValido() sem a necessidade da criação de uma nova instância da classe Pessoa:

Código para Main.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Main {
  public static void main(String[] args) {
    // vamos efetuar uma chamada ao método isCPFValido() sem
    // criar uma instância da classe Pessoa
    if(Pessoa.isCPFValido("12345")){
      System.out.println("CPF Válido");
    }
    else{
      System.out.println("CPF Inválido");
    }
  }
}

Note que o método estático isCPFValido() da classe Pessoa foi declarado assim:

public static boolean isCPFValido(String cpf);

Desta forma, podemos chamá-lo a partir de código externo à classe sem a necessidade de criar uma nova instância da mesma. Veja:

if(Pessoa.isCPFValido("12345")){}

É importante notar que métodos estáticos não possuem acesso a variáveis e métodos não estáticos da classe, tampouco ao ponteiro this (que só existe quando criamos instâncias da classe). Assim, o trecho de código abaixo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// um método estático que permite verificar a validade
// de um número de CPF
public static boolean isCPFValido(String cpf){
  // alguns cálculos aqui

  // vamos acessar a variável não estática nome
  nome = "Osmar J. Silva";
    
  return true;
}

vai gerar o seguinte erro de compilação:

Uncompilable source code - non-static variable nome cannot be referenced from a static context.

Se usarmos this.nome a mensagem de erro de compilação será:

Uncompilable source code - non-static variable this cannot be referenced from a static context.

Métodos estáticos são úteis quando precisamos criar classes que atuarão como suporte, nas quais poderemos chamar funções (métodos) auxiliares sem a necessidade de criar novas instâncias a cada vez que estas funções forem necessárias.


Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Como usar a pesquisa ou busca linear ou sequencial nos elementos de um vetor em Java

Quantidade de visualizações: 4643 vezes
A busca linear ou sequencial, muitas vezes chamada de pesquisa linear ou sequencial, é geralmente implementada por meio de um algorítmo que varre os elementos de um coleção sequencial, começando do primeiro elemento e indo até o último. Esta busca não é tão usada quando a pesquisa binária ou hashing, por ser considerada muito lenta quando aplicado a um conjunto de dados muito grande.

A busca linear ou sequencial em um vetor Java pode ser descrito pelos seguintes passos:

1) Efetua a varredura dos elementos do vetor.
2) Compara o valor do elemento atual do vetor com o valor sendo pesquisado.
3) Se o valor for encontrado, efetue o procedimento desejado com o elemento do vetor.
4) Se a varredura alcançar o último elemento do vetor e o valor pesquisado não for encontrado, exiba uma mensagem de erro ou algum outro procedimento para alertar o usuário do programa.

Veja um exemplo no qual declaramos e preenchemos um vetor de int com 5 elementos e em seguida usamos um método pesquisaLinear para verificar se um determinado valor existe no vetor:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String a[]){    
    // vamos criar um vetor de 5 elementos int
    int[] valores = {32, 7, 21, 4, 90};    
    // vamos pesquisar o valor 21
    int valor = 21;

    // vamos verifiar se o valor está no vetor
    int indice = pesquisaLinear(valores, valor);
    if(indice > -1){
      System.out.println("O valor foi encontrado no índice: " 
        + indice);  
    }
    else{
      System.out.println("O valor não foi encontrado.");
    }    
  } 
    
  // método que permite efetuar a busca linear em um vetor  
  public static int pesquisaLinear(int[] vetor, int valor){    
    // percorre os elementos do vetor
    for(int i = 0; i < vetor.length; i++){    
      // o valor foi encontrado?
      if(vetor[i] == valor){    
        return i;    
      }    
    }    

    // não foi encontrado? vamos retornar -1    
    return -1;    
  }   
}

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

O valor foi encontrado no índice: 2

Veja o mesmo código sem usar um método adicional, ou seja, a busca linear é feito dentro do método main() da classe Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String a[]){    
    // vamos criar um vetor de 5 elementos int
    int[] valores = {32, 7, 21, 4, 90};    
    // vamos pesquisar o valor 21
    int valor = 21;

    // vamos verifiar se o valor está no vetor
    int indice = -1; // não foi encontrado
    
     // percorre os elementos do vetor
    for(int i = 0; i < valores.length; i++){    
      // o valor foi encontrado?
      if(valores[i] == valor){    
        indice = i;
        break;
      }    
    }    

    if(indice > -1){
      System.out.println("O valor foi encontrado no índice: " 
        + indice);  
    }
    else{
      System.out.println("O valor não foi encontrado.");
    }    
  }   
}



Vamos testar seus conhecimentos em Hidrologia

Considerando as características da Bacia do Rio São Francisco, marque a alternativa correta.

A) Apresenta somente rios perenes na sua área de abrangência.

B) Está localizada somente na Região Nordeste do Brasil.

C) A sua principal usina hidrelétrica é a de Furnas.

D) Apresenta como regimes formadores o pluvial e o nival.

E) Possui grande importância econômica para a população local.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

No Brasil, a maioria da precipitação cai sob a forma de chuva, convencionalmente medida por meio de aparelhos denominados pluviômetros e/ou pluviógrafos. Qual o volume de água, em litros, coletado em uma área de 10000 cm2, após uma precipitação de 1,5 cm?

A) 15000 litros.

B) 1500 litros.

C) 150 litros.

D) 1,5 litros.

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

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Serviços preliminares e instalações provisórias

Em um canteiro de obras:

A) São permitidas a entrada e a permanência de trabalhadores que não sejam compatíveis com a fase da obra.

B) É permitida a entrada rápida de trabalhadores que não estejam assegurados.

C) São proibidas a entrada e a permanência de quaisquer trabalhadores, independentemente da fase da obra.

D) É proibida a entrada de trabalhadores que não estejam assegurados, mas é permitida a permanência de trabalhadores que não sejam compatíveis com a fase da obra.

E) São proibidas a entrada e a permanência de trabalhadores que não estejam assegurados e que não sejam compatíveis com a fase da obra.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

document.write(typeof NaN);

Qual é o resultado de sua execução?

A) undefined

B) null

C) number

D) NaN

E) string
Verificar Resposta Estudar Cards Todas as Questões

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

O exercício do direito à propriedade

O tema dos direitos de vizinhança tem uma série de regras no Código Civil, que delimita o que um vizinho pode realizar em relação aos limites do exercício regular de seus direitos, que terminam onde iniciam os direitos do outro. Quanto ao tema dos direitos de vizinhança, seus desdobramentos conceituais e regras existentes no Código Civil, analise as assertivas marcando a opção correta:

A) Os direitos de vizinhança são obrigações ambulatórias, propter rem, pois acompanham a coisa, assim como o IPTU e as dívidas de condomínio.

B) Pela teoria da anterioridade ou pré-ocupação, o vizinho que se estabeleceu depois não pode reclamar do barulho do que já estava ali antes.

C) A função social da propriedade é um dos nortes da matéria dos direitos de vizinhança e é construção jurisprudencial, não estando prevista legislativamente.

D) O dono das árvores que estiverem situadas em seu terreno tem direito sobre elas, seus frutos e sua poda, sendo seus os frutos que caem no terreno do vizinho, e seu direito às raízes das árvores que crescem em terreno do vizinho, pois são direitos que decorrem da sua propriedade.

E) O dono ou possuidor do prédio inferior está obrigado a tolerar fluxo de águas artificialmente levadas (a exemplo de aquedutos ou captação de águas pluviais).
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

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



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