我下面有一个方法,当调用时,该方法应该显示列表中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");
}