有没有办法获取JList中的所有元素?

我想知道是否有办法检索已添加到JList的所有元素的列表。 例如,我希望JList从自定义单元格渲染器返回一个数组或字符串或JLabel列表。

当然是。 你带有循环getElementAt()

例:

 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.WindowConstants; public class Jlist { JFrame frame; JList list; JButton button; public Jlist(){ init(); } public void init(){ frame = new JFrame("Sample"); frame.setSize(300, 300); frame.setLayout(new BorderLayout(30, 30)); DefaultListModel model = new DefaultListModel<>(); model.addElement("A"); model.addElement("B"); model.addElement("C"); model.addElement("D"); model.addElement("E"); list = new JList<>(); list.setModel(model); JScrollPane pane = new JScrollPane(list); pane.setViewportView(list); button = new JButton("Get"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { buttonActionPerformed(); } }); frame.add(pane, BorderLayout.NORTH); frame.add(button, BorderLayout.CENTER); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } public void buttonActionPerformed(){ for(int i = 0; i< list.getModel().getSize();i++){ System.out.println(list.getModel().getElementAt(i)); } } public static void main(String[] args) { new Jlist(); } } 

您可以使用getModel方法获取ListModel 。 然后使用getElementAtgetSize方法构建数组或列表或任何你想要的。

试试这个…

  String[] myArray = new String[50]; for (int i = 0; i < jList1.getModel().getSize(); i++) { myArray[i] = String.valueOf(jList1.getModel().getElementAt(i)); }