为什么这个JList不更新以显示ArrayList属性



我下面有一个方法,当调用时,该方法应该显示列表中arrayList元素的属性:

public void updateList(){
DefaultListModel<String> model = (DefaultListModel<String>)jCustomerList.getModel();
for(User user: theUserList.Users){        
model.addElement(user.getName());   
jCustomerList.setModel(model); 
}
}

然而,当调用时,会出现以下错误:

线程"AWT-EventQueue-0"java.lang.ClassCastException中的异常:supermarketediteration2。ShopJFrame$63不能强制转换为javax.swing.DefaultListModel

如何解决此问题?

编辑**

该模型已全局化,如下所示,但现在在实例化模型时出现错误:

public class ShopJFrame extends javax.swing.JFrame {
private UserList theUserList;
private User currentCustomer;
private Customer castedCustomer;
private SupplierList theSupplierList;
private DeliveryCompanyList theDeliveryCompanyList;
private ProductList theProductList;
private Product selectedProduct;
private Supplier aSupplier;
private DeliveryCompany aDeliveryCompany;
//private JList jCustomerList;
private java.awt.Component jTabInMemory1;
private java.awt.Component jTabInMemory2;
private java.awt.Component jTabInMemory3;
private java.awt.Component jTabInMemory4;
private java.awt.Component jTabInMemory5;
private java.awt.Component jTabInMemory6;
DefaultListModel<String> model;


public ShopJFrame() throws IOException, FileNotFoundException, ParseException {
initComponents();
theUserList = new UserList();
User currentCustomer = new Customer();
Customer castedCustomer = null;
theDeliveryCompanyList = new DeliveryCompanyList();
aDeliveryCompany = new DeliveryCompany();
theSupplierList = new SupplierList();
aSupplier = new Supplier();
theProductList = new ProductList();
jTabInMemory1 = jMainTabbedPane.getComponent(1);//PRODUCTS
jMainTabbedPane.remove(1);
jTabInMemory2 = jMainTabbedPane.getComponent(1);//REORDER
jMainTabbedPane.remove(1);
jTabInMemory3 = jMainTabbedPane.getComponent(1);//SUPPLY CHAIN
jMainTabbedPane.remove(1);
jTabInMemory4 = jMainTabbedPane.getComponent(1);//CATALOGUE
jMainTabbedPane.remove(1);
jTabInMemory5 = jMainTabbedPane.getComponent(1);//MY ACCOUNT
jMainTabbedPane.remove(1);
jTabInMemory6 = jMainTabbedPane.getComponent(1);//MY ACCOUNT
jMainTabbedPane.remove(1);
theProductList.loadFromFile(theProductList.getFilename());
theSupplierList.loadFromFile();
theDeliveryCompanyList.loadFromFile();
theUserList.loadFromFile();
theProductList.displayReorders(jProductReorderTextArea);
this.updateComboBox("Supplier");
this.updateComboBox("Delivery Company");
this.updateComboBox("Products");
model = (DefaultListModel<String>)jCustomerList.getModel();
jCustomerList.setModel(model); 

在swing中,模型被传递到JComponent。

DefaultListModel<String> model = new DefaultListModel<>();
jCustomerList = new JList<String>(model);
model.addElement("Albert Einstein");
...

_(后来的JavaFX有可观察的数据类型,有点像您想要的绑定。(_

现在,既不应该创建新的JList也不应该创建ListModel。

public void updateList() {
DefaultListModel<String> model = (DefaultListModel<>)jCustomerList.getModel();
model.addElement("Madame Curie");
}

最新更新