Wprowadzenie do JList w Javie
JList to komponent swing, który wyświetla listę obiektów i pozwala użytkownikowi wybrać jeden lub więcej elementów. JList jest jak ListViews w innych językach programowania, gdzie pozwala nam reprezentować listę elementów.
Definicja interfejsu programu aplikacji (API)
JList jest zdefiniowany w java. pakiet huśtawka.
JList jest ogólny. Ponadto dziedziczy po java.swing.JComponent, który jest klasą abstrakcyjną, która jest klasą bazową dla wszystkich składników Swing z wyjątkiem kontenerów najwyższego poziomu.
- JList klasy publicznej
- rozszerza JComponent
- implementuje Przewijalny, Dostępny
Ponadto, jak widać, JList implementuje javax.swing.Scrollable, interfejs zapewniający przewijany kontener, taki jak JScrollPane i java.swing.Accessible, który jest głównym interfejsem pakietu ułatwień dostępu.
Konstruktory JList
- JList (): Ten konstruktor w klasie JList utworzy listę z pustym modelem tylko do odczytu.
- JList (dane listy Array ()) : Ten konstruktor w klasie JList utworzy listę, która wyświetli elementy z tablicy określonej w parametrze.
- JList (model danych ListModel): Ten konstruktor w klasie JList utworzy listę, która wyświetli elementy z określonego modelu no-null.
- JList (dane listy wektorów): Ten konstruktor w klasie JList utworzy listę, która wyświetli elementy z wektora określonego w parametrze.
Często używane metody JList
- Void addListSelectionListener (detektor ListSelectionListener): Ta metoda służy do dodawania detektora do listy, za pomocą którego można powiadamiać o każdej zmianie wyboru na liście.
- Int gets selectedIndex (): Ta metoda służy do zwrócenia indeksu wybranego elementu listy.
- Int get selected value (): Ta metoda służy do zwrócenia wartości elementu wybranego na liście.
- ListModel getModel (): Ta metoda służy do zwracania modelu danych, który przechowuje elementy listy w składniku JList.
- Void setListData (Object list) data: Ta metoda służy do utworzenia modelu tylko do odczytu z podanej tablicy obiektów w parametrze.
Przykład prostej listy JList w akcji
W poniższym przykładzie użyjemy listy JList do sterowania kolorem panelu. Najpierw stworzymy JList i wypełnimy różnymi kolorami, ustawimy listę na JScrollPane, aby zobaczyć wszystkie kolory na liście i dodamy detektor zdarzeń akcji na liście, na podstawie którego ustawimy kolor panelu tła.
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);))
Wynik:
Dodawanie danych do JList
Nie dołączamy danych bezpośrednio do JLists. Zamiast tego używamy osobnego modelu. Ten model zachowa zawartość listy. Jeśli jednak chcesz renderować elementy z tablicy lub wektora, przekażemy tablicę do naszego konstruktora JList, a następnie JList automatycznie zbuduje dla nas ListModel. Jednak przez większość czasu chcesz używać ListModel, jeśli masz dane pochodzące z kolekcji. Ponadto ListModel definiuje kilka metod, których możemy również używać do manipulowania naszymi danymi.
Możemy zainicjować ListModel w następujący sposób:
- DefaultListModel df = new DefaultListModel ();
- DefaultListModel jest zdefiniowany w pakiecie javax.swing.
Przykład użycia DefaultListModel
W poniższym przykładzie utworzymy ramkę JFrozdzieloną poziomo na dwie połowy. Po lewej stronie będzie znajdować się lista niektórych przedmiotów, a prawa połowa pokaże odpowiednią cenę przedmiotów na sąsiedniej liście. W tym celu najpierw stworzymy JFrame, JList i DefaultListModel, następnie wypełnimy model listą elementów i ich odpowiednimi cenami, ustawimy listę na lewy komponent i ceny na prawy komponent, ustawimy rozmiar ramki i w końcu obramuj logikę, aby podać prawidłową cenę za przedmiot.
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;
)
)
)
Wynik:
Wniosek - JList w Javie
Klasa Jlist w Javie nadaje się do wyświetlania danych obiektowych na liście i może być używana do aktywowania zdarzeń na podstawie wyboru określonej wartości z listy. Jlist może być używany do bardzo uporządkowanej reprezentacji danych w aplikacjach Java.
Polecane artykuły
Jest to przewodnik po JList w Javie. Tutaj omawiamy Wprowadzenie, Konstruktory JList, Często używane metody JList wraz z przykładami. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -
- JScrollPane w Javie
- Instrukcje warunkowe w JavaScript
- JDialog w Javie
- JComboBox w Javie
- JLabel w Javie
- Flowlayout w Javie