📅  最后修改于: 2023-12-03 15:01:32.537000             🧑  作者: Mango
Java Swing-JList 是一种可在 Java Swing 应用程序中使用的列表组件。它可以用于显示和选择一个或多个元素。JList 中的元素可以是任何对象,包括字符串、图像或自定义对象。
model
:保存 JList 中显示的元素的数据模型selectionModel
:保存当前选择的元素的模型visibleRowCount
:设置可见行的数量selectionBackground
:设置选中元素的背景颜色selectionForeground
:设置选中元素的前景颜色下面是一个简单的 JList 使用示例:
import javax.swing.*;
public class JListDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("JList Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] data = {"Apple", "Banana", "Grape", "Orange"};
JList<String> list = new JList<>(data);
JScrollPane scrollPane = new JScrollPane(list);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
}
在这个示例中,我们创建了一个包含四个元素的字符串数组。然后,我们创建了一个 JList,并将数据数组传递给它。最后,我们将 JList 放到一个 JScrollPane 中,并将 JScrollPane 添加到 JFrame。运行代码后,可以看到一个包含四个元素的 JList。
除了使用字符串作为元素,JList 还可以显示任何类型的对象。要显示自定义元素,可以创建一个继承自 DefaultListModel 类的自定义数据模型。该模型将负责将自定义对象转换为字符串,并将它们添加到 JList 中。
下面是一个自定义对象的实例:
public class Fruit {
private String name;
private String color;
public Fruit(String name, String color) {
this.name = name;
this.color = color;
}
public String getName() {
return name;
}
public String getColor() {
return color;
}
@Override
public String toString() {
return name + " (" + color + ")";
}
}
该类有两个属性—— name 和 color,并且有一个 toString() 方法,以将 Fruit 对象转换为字符串。
下面是一个使用自定义对象的 JList 示例:
import javax.swing.*;
public class JListDemo2 {
public static void main(String[] args) {
JFrame frame = new JFrame("JList Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultListModel<Fruit> model = new DefaultListModel<>();
model.addElement(new Fruit("Apple", "Red"));
model.addElement(new Fruit("Banana", "Yellow"));
model.addElement(new Fruit("Grape", "Purple"));
model.addElement(new Fruit("Orange", "Orange"));
JList<Fruit> list = new JList<>(model);
list.setCellRenderer(new FruitRenderer());
JScrollPane scrollPane = new JScrollPane(list);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
static class FruitRenderer extends JLabel implements ListCellRenderer<Fruit> {
public FruitRenderer() {
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList<? extends Fruit> list, Fruit fruit, int index, boolean isSelected, boolean cellHasFocus) {
setText(fruit.toString());
setBackground(isSelected ? Color.BLUE : Color.WHITE);
setForeground(isSelected ? Color.WHITE : Color.BLACK);
return this;
}
}
}
我们创建了一个 DefaultListModel,将 Fruit 对象添加到列表中。我们还创建了一个 FruitRenderer 类,以将自定义对象转换为字符串,并为选中和未选中的元素设置不同的颜色。最后,我们将 FruitRenderer 设置为 JList 的 cell renderer,并将 JList 放在 JScrollPane 中。
这里我们自定义了一个渲染器 FruitRenderer,设置了选中元素和未选中元素的颜色,以显示一些自定义的样式。
在本文中,我们介绍了如何使用 JList 组件在 Java Swing 应用程序中显示和选择列表元素。我们学习了 JList 的常用属性和如何自定义元素。我们还通过示例演示了如何使用自定义数据和自定义渲染器。