Introdução ao JList em Java
JList é um componente oscilante que exibe uma lista de objetos e permite ao usuário selecionar um ou mais itens. O JList é como o ListViews em outras linguagens de programação, onde nos permite representar uma lista de itens.
Definição da API (Application Program Interface)
JList é definido no java. pacote de balanço.
JList é genérico. Além disso, ele herda de java.swing.JComponent, que é uma classe abstrata que é a classe base de todos os componentes do Swing, exceto os contêineres de nível superior.
- classe pública JList
- estende JComponent
- implementa Rolável, Acessível
Além disso, como você pode ver, o JList implementa javax.swing.Scrollable, uma interface que fornece um contêiner de rolagem como JScrollPane e java.swing.Accessible, que é a interface principal do pacote de acessibilidade.
Construtores de JList
- JList (): esse construtor na classe JList criará uma lista com um modelo somente leitura e vazio.
- JList (dados da lista Array ()) : este construtor na classe JList criará uma lista que exibirá os elementos da matriz especificada no parâmetro.
- JList (modelo de dados ListModel): esse construtor na classe JList criará uma lista que exibirá os elementos do modelo especificado, não nulo.
- JList (dados da lista de vetores): este construtor na classe JList criará uma lista que exibirá os elementos do vetor especificado no parâmetro.
Métodos comumente usados de JList
- Void addListSelectionListener (ouvinte ListSelectionListener): este método é usado para adicionar um ouvinte à lista, que pode ser usado para ser notificado sempre que houver alguma alteração na seleção na lista que está sendo feita.
- Int obtém selectedIndex (): este método é usado para retornar o índice do item selecionado da lista.
- Int get selected value (): este método é usado para retornar o valor do elemento selecionado na lista.
- ListModel getModel (): este método é usado para retornar o modelo de dados que contém os itens da lista no JList Component.
- Void setListData (Object () list data): este método é usado para criar um modelo somente leitura a partir da matriz de objetos fornecida no parâmetro.
Exemplo de JList Simples em Ação
No exemplo abaixo, usaremos uma JList para controlar a cor do painel. Primeiramente, criaremos o JList e preencheremos com as diferentes cores, definiremos a lista como JScrollPane para ver todas as cores da lista e adicionar um ouvinte de evento de ação na lista, com base na qual definimos a cor do painel de segundo plano.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class JListExample extends JFrame(
private JList list;
private static String() colorNames = ("blue", "green", "yellow", "orange", "red", "black", "grey", "white");
private static Color() colors = (Color.BLUE, Color.GREEN, Color.YELLOW, Color.ORANGE, Color.RED, Color.BLACK, Color.GRAY, Color.WHITE);
public JListExample() (
super("JList Demo Example");
setLayout(new FlowLayout());
list = new JList(colorNames);
list.setVisibleRowCount(5);//number of elements to visible as row in list
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//choose the selection mode in list
add(new JScrollPane(list));
//adding event listener on JList
list.addListSelectionListener(
new ListSelectionListener() (
public void valueChanged(ListSelectionEvent e) (
getContentPane().setBackground(colors(list.getSelectedIndex()));)
));
)public static void main(String() args) (JListExample jl = new JListExample();jl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jl.setSize(300, 300);jl.setVisible(true);))
Resultado:
Adicionando dados ao JList
Não anexamos dados diretamente às JLists. Em vez disso, usamos um modelo separado. Esse modelo manterá o conteúdo da lista. No entanto, se você deseja renderizar itens de uma matriz ou vetor, passaremos a matriz no construtor JList e, em seguida, a JList criará automaticamente o ListModel para nós. No entanto, na maioria das vezes você deseja usar o ListModel se tiver dados provenientes de coleções. Além disso, o ListModel define vários métodos que também podemos usar para manipular nossos dados.
Podemos iniciar o ListModel da seguinte maneira:
- DefaultListModel df = new DefaultListModel ();
- DefaultListModel é definido no pacote javax.swing.
Exemplo para usar DefaultListModel
Aqui no exemplo abaixo, criaremos um JFrame sendo dividido em duas metades horizontalmente. A esquerda conterá a lista de alguns itens e a metade direita exibirá o preço respectivo dos itens na lista adjacente. Para fazer isso primeiro, criaremos um JFrame, um JList e um DefaultListModel; em seguida, preencheremos o modelo com a lista de itens e seus respectivos preços, definiremos a lista para o componente esquerdo e preços para o componente direito, definiremos o tamanho do quadro e finalmente, estruture a lógica para listar o preço correto de um item.
import javax.swing.*;
import java.math.BigDecimal;
public class JListExample (
JFrame frame = new JFrame("Storage");
JList list = new JList();
DefaultListModel model = new DefaultListModel();
JLabel label = new JLabel();
JPanel panel = new JPanel();
JSplitPane splitPane = new JSplitPane();
public JListExample() (
list.setModel(model);
model.addElement(new Product("Item1", new BigDecimal("49.00")));
model.addElement(new Product("Item2", new BigDecimal("150")));
model.addElement(new Product("Item3", new BigDecimal("54.5")));
model.addElement(new Product("Item4", new BigDecimal("120.00")));
list.getSelectionModel().addListSelectionListener(e -> (
Product p = list.getSelectedValue();
label.setText(p.getName() + " price is = " + p.getPrice().toPlainString());
));
splitPane.setLeftComponent(new JScrollPane(list));
panel.add(label);
splitPane.setRightComponent(panel);
splitPane.setResizeWeight(0.5); //used to set the way it splits the left and right component
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(splitPane);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setSize(500, 300);
)
public static void main(String() args) (
SwingUtilities.invokeLater(JListExample::new);
)
private class Product (
String name;
BigDecimal price;
public Product(String name, BigDecimal price) (
this.name = name;
this.price = price;
)
public String getName() (
return name;
)
public void setName(String name) (
this.name = name;
)
public BigDecimal getPrice() (
return price;
)
public void setPrice(BigDecimal price) (
this.price = price;
)
@Override
public String toString() (
return name;
)
)
)
Resultado:
Conclusão - JList em Java
A classe Jlist em Java é adequada para exibir dados do objeto em uma lista e pode ser usada para ativar eventos com base na seleção de um valor específico na lista. O Jlist pode ser usado para representar dados de maneira muito ordenada em aplicativos Java.
Artigos recomendados
Este é um guia para o JList em Java. Aqui discutimos a introdução, construtores de JList, métodos comumente usados de JList, juntamente com exemplos. Você também pode consultar nossos outros artigos sugeridos para saber mais:
- JScrollPane em Java
- Instruções condicionais em JavaScript
- JDialog em Java
- JComboBox em Java
- JLabel em Java
- Flowlayout em Java