Введення в JList на Java
JList - гойдальний компонент, який відображає список об'єктів і дозволяє користувачеві вибрати один або кілька елементів. JList - це як ListViews в інших мовах програмування, де він дозволяє нам представляти список елементів.
Визначення інтерфейсу прикладної програми (API)
JList визначається в java. гойдалка пакет.
JList є загальним. Більше того, він успадковує від java.swing.JComponent, який є абстрактним класом, який є базовим класом для всіх компонентів Swing, крім контейнерів верхнього рівня.
- публічний клас JList
- розширює JComponent
- реалізує прокручуваний, доступний
Більше того, як ви бачите, JList реалізує javax.swing.Scrollable - інтерфейс, що забезпечує контейнер прокрутки на зразок JScrollPane та java.swing.Accessible, який є основним інтерфейсом для пакету доступності.
Конструктори JList
- JList (): Цей Конструктор у класі JList створить Список із моделлю, лише для читання, порожньою.
- Дані списку JList (Array ()) : Цей конструктор у класі JList створить список, який відображатиме елементи з масиву, визначеного в параметрі.
- JList (модель даних ListModel): Цей конструктор у класі JList створить список, який відображатиме елементи із заданої, ненульової моделі.
- JList (дані векторного списку): Цей конструктор класу JList створить список, який відображатиме елементи з вектора, вказаного в параметрі.
Найпоширеніші методи JList
- Недійсний addListSelectionListener (слухач ListSelectionListener): Цей метод застосовується для додавання слухача до списку, який може бути використаний для сповіщення про будь-які зміни у виборі списку, який робиться.
- Int отримує обранийIndex (): Цей метод використовується для повернення індексу вибраного елемента списку.
- Int get selected value (): Цей метод використовується для повернення значення елемента, вибраного у списку.
- ListModel getModel (): Цей метод використовується для повернення моделі даних, що містить елементи списку в JList Component.
- Пустота setListData (дані списку Object ()): Цей метод використовується для створення моделі, доступної лише для читання, із заданого масиву об'єктів у параметрі.
Приклад простого JList в дії
У наведеному нижче прикладі ми будемо використовувати JList для контролю кольору панелі. По-перше, ми зробимо JList та заповнимо різні кольори, встановимо список JScrollPane для того, щоб побачити всі кольори списку та додамо в список слухача подій дії, на основі якого ми встановимо колір фонової панелі.
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);))
Вихід:
Додавання даних до JList
Ми не додаємо дані безпосередньо до списків JL. Натомість ми використовуємо окрему модель. Ця модель підтримуватиме вміст списку. Однак якщо ви хочете вивести елементи з масиву чи вектора, ми просто передамо масив у нашому конструкторі JList, тоді JList автоматично створить ListModel для нас. Однак більшу частину часу ви хочете використовувати ListModel, якщо у вас є дані, що надходять із колекцій. Крім того, ListModel визначає кілька методів, які ми також можемо використовувати для маніпулювання нашими даними.
Ми можемо ініціювати ListModel наступним чином:
- DefaultListModel df = новий DefaultListModel ();
- DefaultListModel визначений у пакеті javax.swing.
Приклад використання DefaultListModel
Тут, у нижченаведеному прикладі, ми створимо JFrame, розділений на дві половини по горизонталі. Зліва міститиме список деяких предметів, а права половина відображатиме відповідну ціну предметів у сусідньому списку. Для цього спочатку створимо JFrame, JList та DefaultListModel, потім заповнимо модель списком елементів та їх відповідними цінами, встановимо список на лівий компонент та ціни на правий компонент, встановимо розмір кадру та нарешті кадр логіка, щоб перерахувати правильну ціну за предмет.
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;
)
)
)
Вихід:
Висновок - JList на Java
Клас Jlist на Java підходить для відображення даних об’єктів у списку і може використовуватися для активації подій на основі вибору певного значення у списку. Jlist може використовуватися для представлення даних в дуже впорядкованому вигляді в Java-додатках.
Рекомендовані статті
Це посібник з JList на Java. Тут ми обговорюємо Вступ, конструктори JList, загальновживані методи JList разом із прикладами. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -
- JScrollPane на Java
- Умовні заяви у JavaScript
- JDialog на Java
- JComboBox на Java
- JLabel на Java
- Розкладка в Java