Úvod do JList v Javě
JList je komponenta kývání, která zobrazuje seznam objektů a umožňuje uživateli vybrat jednu nebo více položek. JList je jako ListViews v jiných programovacích jazycích, kde nám umožňuje reprezentovat seznam položek.
Definice aplikačního programového rozhraní (API)
JList je definován v java. houpačka balíček.
JList je obecný. Navíc zdědí z java.swing.JComponent, což je abstraktní třída, která je základní třídou pro všechny komponenty Swing kromě kontejnerů nejvyšší úrovně.
- veřejná třída JList
- rozšiřuje JComponent
- implementuje posuvné, přístupné
Jak můžete vidět, JList implementuje javax.swing.Scrollable, rozhraní, které poskytuje rolovací kontejner jako JScrollPane, a java.swing.Accessible, což je hlavní rozhraní pro balíček usnadnění přístupu.
Konstruktory JList
- JList (): Tento konstruktor ve třídě JList vytvoří seznam s prázdným modelem jen pro čtení.
- Data seznamu JList (Array ()) : Tento konstruktor ve třídě JList vytvoří seznam, který zobrazí prvky z pole specifikovaného v parametru.
- JList (datový model ListModel): Tento konstruktor ve třídě JList vytvoří seznam, který zobrazí prvky ze zadaného modelu bez nuly.
- JList (data seznamu vektorů): Tento konstruktor ve třídě JList vytvoří seznam, který zobrazí prvky z vektoru určeného v parametru.
Obvykle používané metody JList
- Void addListSelectionListener (ListSelectionListener posluchač): Tato metoda se používá k přidání posluchače do seznamu, který lze použít k upozornění vždy, když dojde ke změně výběru v seznamu.
- Int gets selectedIndex (): Tato metoda se používá k návratu indexu vybrané položky v seznamu.
- Int get selected value (): Tato metoda se používá k vrácení hodnoty prvku vybraného v seznamu.
- ListModel getModel (): Tato metoda se používá k návratu datového modelu, který obsahuje položky seznamu v komponentě JList.
- Void setListData (Data seznamu objektů ()): Tato metoda se používá k vytvoření modelu jen pro čtení z daného pole objektů v parametru.
Příklad jednoduchého JList v akci
V níže uvedeném příkladu použijeme JList k ovládání barvy panelu. Nejprve vytvoříme JList a vyplníme různými barvami, nastavíme seznam a JScrollPane, abychom viděli všechny barvy seznamu a přidáme posluchače akčních akcí do seznamu, na základě kterého nastavíme barvu panelu pozadí.
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);))
Výstup:
Přidání dat do JList
Nepřipojujeme data přímo k JLists. Místo toho používáme samostatný model. Tento model bude udržovat obsah seznamu. Pokud však chcete vykreslit položky z pole nebo vektoru, pak prostě předáme pole v našem konstruktoru JList, pak JList pro nás automaticky vytvoří ListModel. Většinu času však chcete použít ListModel, pokud máte data pocházející ze sbírek. ListModel navíc definuje několik metod, které můžeme také použít k manipulaci s našimi daty.
ListModel můžeme iniciovat následujícím způsobem:
- DefaultListModel df = new DefaultListModel ();
- DefaultListModel je definován v balíčku javax.swing.
Příklad použití DefaultListModel
Zde v níže uvedeném příkladu vytvoříme JFrame, který se horizontálně rozdělí na dvě poloviny. Vlevo bude obsahovat seznam některých položek a v pravé polovině se zobrazí příslušná cena položek v sousedním seznamu. Nejprve vytvoříme JFrame, JList a DefaultListModel, poté vyplníme model seznamem položek a jejich příslušných cen, nastavíme seznam na levou komponentu a ceny na pravou komponentu, nastavíme velikost rámce a na posledním snímku logika pro výčet správné ceny za položku.
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;
)
)
)
Výstup:
Závěr - JList v Javě
Třída Jlist v Javě je vhodná pro zobrazování dat objektů v seznamu a může být použita k aktivaci událostí na základě výběru konkrétní hodnoty v seznamu. Jlist lze použít k reprezentaci dat velmi uspořádaným způsobem v Java aplikacích.
Doporučené články
Toto je průvodce JListem v Javě. Zde diskutujeme Úvod, Konstruktory JList, běžně používané metody JList spolu s příklady. Další informace naleznete také v dalších navrhovaných článcích -
- JScrollPane v Javě
- Podmíněné příkazy v JavaScriptu
- JDialog v Javě
- JComboBox v Javě
- JLabel v Javě
- Flowlayout v Javě