Java Swing设计JList的时候,可以一次性大量地添加或删除元素吗?
发布网友
发布时间:2022-04-26 00:59
我来回答
共2个回答
热心网友
时间:2023-10-03 04:19
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JlistD {
public JlistD(String title) {
JFrame frame = new JFrame(title);
setLAF(); // 设置风格
frame.getContentPane().add(new ListPanel());
init(frame);
}
private void setLAF() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ignore) {
}
}
public void init(JFrame f) {
f.setAlwaysOnTop(true);
f.pack();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
new JlistD("JListD");
}
}
class ListPanel extends JPanel {
private DefaultListModel model;
private JList list;
public ListPanel() {
Dimension d = new Dimension(300, 300);
this.setPreferredSize(d);
this.setLayout(new BorderLayout());
addList();
addButtons();
}
private void addList() {
model = new DefaultListModel();
list = new JList(model);
list.setFixedCellHeight(20);
list.setPreferredSize(new Dimension(300, 40));
this.add(list, BorderLayout.NORTH);
}
private void addButtons() {
JButton limit = new JButton("limit");
JButton reset = new JButton("reset");
JButton clear = new JButton("clear");
JPanel panel = new JPanel();
limit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
list.setPreferredSize(new Dimension(300, 100));
list.revalidate();
}
});
reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (model.getSize() == 0) {
String[] items = { "A", "B", "C", "D", "E", "F", "G", "H", "I" };
for (int i = 0; i < items.length; i++) {
model.add(i, items[i]);
}
}
list.setPreferredSize(new Dimension(300, 180));
list.revalidate();
}
});
clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
model.removeAllElements();
list.setPreferredSize(new Dimension(300, 40));
list.revalidate();
}
});
panel.add(limit);
panel.add(reset);
panel.add(clear);
this.add(panel, BorderLayout.SOUTH);
}
}
热心网友
时间:2023-10-03 04:20
最简单的方法,按limit的时候把字符串数组拷贝个指定元素数的副本,用这个副本做参数调用list的setListData方法,按reset就用完整数组做参数。
另一个方法是自定义一个ListModel,在里面根据limit、reset设置返回给JList的数量。