【问题标题】:Display all values of list in JList using Applet使用 Applet 显示 JList 中列表的所有值
【发布时间】:2013-06-19 10:19:06
【问题描述】:

这是我的代码:

     private static final long serialVersionUID = 1L;
  /* The data as a list of Persons.
  */
  private static List<PersonModel> personData = new ArrayList<PersonModel>();

  public static JList<PersonModel> jlist;


  public void init() {

      // Add some sample data
      personData.add(new PersonModel("Hans", "Muster"));
      personData.add(new PersonModel("Ruth", "Mueller"));
      personData.add(new PersonModel("Heinz", "Kurz"));
      personData.add(new PersonModel("Cornelia", "Meier"));
      personData.add(new PersonModel("Werner", "Meyer"));
      personData.add(new PersonModel("Lydia", "Kunz"));
      personData.add(new PersonModel("Anna", "Best"));
      personData.add(new PersonModel("Stefan", "Meier"));
      personData.add(new PersonModel("Martin", "Mueller"));

      String dataQ = " ";


      for(int i = 0; i < personData.size(); i++){
            dataQ = personData.get(i).getLastName() + " " + personData.get(i).getFirstName();
      }
      String[] arr = new String[] { dataQ };
      jlist = new JList(arr);

但它只显示最后一条记录。如何显示所有记录/值?有任何想法吗?谢谢。

【问题讨论】:

    标签: java swing applet jlist defaultlistmodel


    【解决方案1】:

    您使用的是String variable 而不是array of String,因此在循环中迭代时,它会将Arraylist personData 的最后一个值存储在dataQ variable 中。试试这个,

    int size=personData.size();//get size of personData
    String dataQ[]=new String[size];//change String dataQ to dataQ[]; 
    
     for(int i = 0; i < personData.size(); i++)
          {
                dataQ[i] = personData.get(i).getLastName() + " " + personData.get(i).getFirstName();
          }
    

    【讨论】:

      【解决方案2】:

      您可以只使用Jlist#toArray 方法来获取列表的数组表示形式。

      jList = new JList(personData.toArray(new PersonModel[personData.size()]);
      

      当然,此时您需要提供ListCelLRenderer 来呈现这些值。

      更好的方法是直接使用 ListModel。比如……

      public class PersonListModel extends AbstractListModel<PersonModel>{
      
          private List<PersonModel> people;
      
          public PersonListModel(List<PersonModel> people) {
              this.people = people;
          }
      
          @Override
          public int getSize() {
              return people.size();
          }
      
          @Override
          public PersonModel getElementAt(int index) {
              return people.get(index);
          }
      
      }
      

      那么你可以这样做......

      JList jList = new JList(new PersonListModel(personData));
      

      查看How to use lists了解更多详情

      【讨论】:

        【解决方案3】:
         String[] arr = new String[]; 
        
        for(int i = 0; i < personData.size(); i++){
                    dataQ = personData.get(i).getLastName() + " " + personData.get(i).getFirstName();
        arr [i] = dataQ;
              }
        
              jlist = new JList(arr);
        

        试试这个

        【讨论】:

          猜你喜欢
          • 2011-11-06
          • 2011-12-14
          • 1970-01-01
          • 2011-07-14
          • 2013-07-11
          • 2019-10-12
          • 2021-04-28
          • 1970-01-01
          • 2020-05-01
          相关资源
          最近更新 更多