使用jList中选择的对象的信息

时间:2014-01-02 19:46:46

标签: java swing jlist

我很难从jList获取信息,以便在单击按钮时可以用它来创建不同类中的对象,

private void jButtonAddOrderActionPerformed(java.awt.event.ActionEvent evt) {                                                
    int noCopies;
    String title, Name;

    noCopies = Integer.parseInt(jTextFieldCopies.getText());
    title = Book.bookInstances.get(jListPubBooks.getSelectedIndex()).getName();
    Name = Book.bookInstances.get(jListPubBooks.getSelectedIndex()).getPublisherName();
    new Order(noCopies, title, Name);
    setjlistmodel(Order.orderItem);

我确信我的setjlistmodel方法没有问题,因为只有从文本字段获取信息时,这在我的程序中的其他地方才有效。我认为我的问题在于这两行:

        title = Book.bookInstances.get(jListPubBooks.getSelectedIndex()).getName();
    Name = Book.bookInstances.get(jListPubBooks.getSelectedIndex()).getPublisherName();

}      

这是我的订单类;

package bookstore;
import java.util.ArrayList;

public class Order {
int noOfBooks;
String bookTitle;
String pubName;
public static ArrayList<Order> orderItem = new ArrayList<>();
ArrayList<ArrayList<Order>> Order = new ArrayList<>();


public Order(int noBooks, String Title, String Name)
{
    this.noOfBooks = noBooks;
    this.bookTitle = Title;
    this.pubName = Name;
    orderItem.add(this);
}
public void addOrder(ArrayList ord)
{
    Order.add(ord);
}
public int getNoBooks()
{
    return noOfBooks;
}
public String getBookTitle()
{
    return bookTitle;
}
public String getPubName()
{
    return pubName;
}
}

setjlistmodel方法:

private void setjlistmodel(ArrayList<Order> orderInstances){
    DefaultListModel OrderList = new DefaultListModel();
    for(int i = 0; i<=OrderList.size()-1;i++){
        OrderList.addElement(orderInstances.get(i).getNoBooks());

        System.out.println(orderInstances.get(i).getBookTitle());
        System.out.println(OrderList.firstElement());
    }

    jListOrder.setModel(OrderList);
}

问题是单击按钮时它没有在jListOrder中显示任何内容。我不认为订单被添加到orderItem ArrayList。

1 个答案:

答案 0 :(得分:1)

  

“问题是当单击按钮时它没有在jListOrder中显示任何内容。我不认为订单被添加到orderItem ArrayList。”

我认为添加orderItem很好。

第一次初始化时,

OrderList大小为零,这意味着你的循环绝对没有任何东西

DefaultListModel OrderList = new DefaultListModel();
for(int i = 0; i <= OrderList.size() - 1; i++)

你可能想要

for(int i = 0; i <= orderInstances.size() - 1; i++)

使用ArrayList尺寸。


作为旁注,请将运营商与空间分开。它使阅读更容易。