如何在 JList 中显示数组列表?

Posted

技术标签:

【中文标题】如何在 JList 中显示数组列表?【英文标题】:How can I display an arraylist in a JList? 【发布时间】:2019-10-12 04:14:04 【问题描述】:

我想在 Jlist 中显示 arraylist 自行车中元素的所有详细信息。我一直试图弄清楚如何做到这一点,但我就是无法破解它。 Jlist 是名为 pnlBikesTab 的面板的一部分。

ArrayList 和 JList

 ArrayList<Bike> bikes = new ArrayList<Bike>();
 JList<String> lstBikes ;

填充数组列表

 public void Intial()
//Add 12 bikes  
 Bike b1 = new Bike(1, "Mountain", 12, "Not available") ;       
    Bike b2 = new Bike(2, "Road", 10, "Available") ;         
    Bike b3 = new Bike(3, "City", 8, "Available") ; 
    Bike b4 = new Bike(4, "Mountain", 12, "Available") ;   
    Bike b5 = new Bike(5, "Road", 10, "Available") ;    
    Bike b6 = new Bike(6, "City", 8, "Available") ;        
    Bike b7 = new Bike(7, "Mountain", 12, "Available") ;
    Bike b8 = new Bike(8,"Road", 10, "Available") ;
    EBike b9 = new EBike(9, "eBike", 18, "Not available", "Full Power") ;
    EBike b10 = new EBike(10, "eBike", 18, "Available", "Full Power");
    EBike b11 = new EBike(11, "eBike", 14, "Available", "Power Assist") ;
    EBike b12 = new EBike(12, "eBike", 14, "Available", "Power Assist") ;
    bikes.add(b1) ;
    bikes.add(b2) ;
    bikes.add(b3) ;
    bikes.add(b4) ;
    bikes.add(b5) ;
    bikes.add(b6) ;
    bikes.add(b7) ;
    bikes.add(b8) ;
    bikes.add(b9) ;
    bikes.add(b10) ;
    bikes.add(b11) ;
    bikes.add(b12) ;

主要

 public static void main(String[] args)
        BikeNowGUI fr = new BikeNowGUI();
        fr.Intial();
        fr.setTitle("Bikes") ; 
        fr.setLocationRelativeTo(null); //Center frame
        fr.setSize(300, 500);
        fr.setVisible(true);
    

图形界面

public BikeNowGUI()
        tabs = new JTabbedPane() ; 
        //BikesTab Panel  
        pnlBikesTab = new JPanel() ;
        lblBikes = new JLabel("Bikes") ; 
        pnlBikesTab.add(lblBikes) ;
        lblImages = new JLabel(icons[0]) ;
        pnlBikesTab.add(lblImages) ;
        //Jlist
        ArrayList<Bike> bikes = new ArrayList<Bike>();
        Bike[] items = new Bike[bikes.size()];
        bikes.toArray(items);
        lstBikes = new JList(items);
        pnlBikesTab.add(lstBikes) ;
        tabs.add("Bikes", pnlBikesTab) ;

        //CustomersTab Panel
        pnlCustomersTab = new JPanel();
        tabs.add("Customers", pnlCustomersTab) ;

        //RentsTab Panel
        pnlRentsTab = new JPanel(); 
        tabs.add("Rents", pnlRentsTab) ;

        add(tabs);
    

【问题讨论】:

你需要存储toArray调用的结果,list.add(bikes.toArray()) 我把这段代码放在哪里?我从哪里获取列表? list 是您的JListlstBikes = new JList(bikes.toArray ()) . 【参考方案1】:

@daniu 是对的。你可以用这个

lstBikes = new JList(bikes.toArray());

另一件事是,自行车将始终在 BikeNowGUI 中返回大小 0,因为您在 Initial 方法之前首先调用 BikeNowGUI。我建议您将所有代码移至 Initial 方法。

【讨论】:

@LachlanWilliamson 你把所有代码都移到BikeNowGUI了吗? 是的。现在元素 arraylist 出现在列表框中。

以上是关于如何在 JList 中显示数组列表?的主要内容,如果未能解决你的问题,请参考以下文章

检索 JList 项的数组数据

java JList 添加数据后,如何更新啊

禁用 JList 中的项目

JList 中的多列显示

java swing 中的列表框JList如何在程序中动态的添加和删除元素

JList 复制选择