【问题标题】:How to iterate through an ArrayList and only pull out 1 field from each object如何遍历 ArrayList 并仅从每个对象中提取 1 个字段
【发布时间】:2014-12-31 21:18:25
【问题描述】:

我正在处理 JList 问题。我有一个对象数组列表,每个对象有 3 个字段。我想将lastName、firstName 放在JList 中,但只能弄清楚如何从ArrayList 中提取最后一个对象信息。

任何帮助将不胜感激。谢谢

import java.awt.EventQueue;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.AbstractListModel;

public class TestingListsGUI
{

private JFrame  frame;
String[]        values;

/**
 * Launch the application.
 */
public static void main(String[] args)
{
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            try
            {
                TestingListsGUI window = new TestingListsGUI();
                window.frame.setVisible(true);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public TestingListsGUI()
{
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize()
{
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    // Create Array list and populate it with generic info for testing
    final List<JListsTesting> myList = new ArrayList<JListsTesting>();

    myList.add(new JListsTesting("Bruce", "James", "Totally Awesome"));
    myList.add(new JListsTesting("Potter", "Harry", "A Magician"));
    myList.add(new JListsTesting("Sanders", "Col", "The Chicken Meister"));
    myList.add(new JListsTesting("Bond", "James", "Licensed to Kill"));

    values = new String[myList.size()];

    for (int i = 0; i < myList.size(); i++)
    {

        values[i] = JListsTesting.getFirstName();

    }

    JList list = new JList();
    list.setModel(new AbstractListModel()
    {

        public int getSize()
        {
            return values.length;
        }

        public Object getElementAt(int index)
        {
            return values[index];
        }
    });

    list.setSelectedIndex(0);
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    list.setBounds(33, 23, 236, 249);
    frame.getContentPane().add(list);
}

}

【问题讨论】:

    标签: java swing arraylist iterator jlist


    【解决方案1】:
    1. 不要使用nullLayoutManager。阅读下一篇tutorial
    2. 填充值使用下一个代码:

      for (int i = 0; i < myList.size(); i++) {
          values[i] = myList.get(i).getFirstName();
      }
      
    3. 您不需要为JList 自定义模型,只需使用值构造函数创建JList

      JList&lt;String&gt; list = new JList&lt;String&gt;(values);

    另请阅读JList tutorial

    【讨论】:

      猜你喜欢
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      相关资源
      最近更新 更多