2013-05-28 45 views
1

如何在Java不兼容類型中爲此函數賦值?如何在java不兼容類型中爲此函數賦值

public class CustomerInfo implements Serializable { 

    private static final long serialVersionUID = 9083257536541L; 
    protected String id; 
    protected String searchkey; 
    protected String taxid; 
    protected String name; 
    protected String postal; 

    /** Creates a new instance of UserInfoBasic */ 
    public CustomerInfo(String id) { 
     this.id = id; 
     this.searchkey = null; 
     this.taxid = null; 
     this.name = null; 
     this.postal = null; 
    } 

    public String getId() { 
     return id; 
    }  

    public String getTaxid() { 
     return taxid; 
    }  

    public void setTaxid(String taxid) { 
     this.taxid = taxid; 
    } 

    public String getSearchkey() { 
     return searchkey; 
    } 

    public void setSearchkey(String searchkey) { 
     this.searchkey = searchkey; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getPostal() { 
     return postal; 
    } 

    public void setPostal(String postal) { 
     this.postal = postal; 
    }  

    public String printTaxid() { 
     return StringUtils.encodeXML(taxid); 
    } 

    public String printName() { 
     return StringUtils.encodeXML(name); 
    } 

    @Override 
    public String toString() { 
     return getName(); 
    }  
} 

    private CustomerInfo selectedCustomer; 

    public CustomerInfo getSelectedCustomer() { 
     // construct a CustomerInfo from the data in your String 

     return selectedCustomer; 
    } 


private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) { 

      selectedCustomer = (CustomerInfo) jListCustomers.getSelectedValue(); 
      //test code 
      String testing = m_jtxtName.getText(); 
       System.out.println("Now the selectedCustomer is dispayed!"); 
      System.out.println(selectedCustomer); 
      System.out.println(testing); 
     //test code 
      dispose();  
     } 

在上面顯示的代碼中,我需要將字符串測試值分配給selectedCustomer。我如何分配值?這是我得到的錯誤:

selectedCustomer = m_jtxtName.getText(); 

incompatible types 
    required: CustomerInfo 
    found: String 
+1

那麼是......'selectedCustomer'大概是一個'CustomerInfo'類型的變量。你想如何從字符串創建一個'CustomerInfo'? –

+0

您需要從'm_jtxtName.getText();'構造'CustomerInfo'對象,該對象返回一個'String'。 – NINCOMPOOP

+0

多數民衆贊成我的問題是有任何替代指派給selectCustomer – user2427965

回答

2

你不能!

selectedCustomerCustomerInfo類型的對象。

m_jtxtName.getText()返回String

您不能分配一個字符串到CustomerInfo。

也許你需要做的是這樣的:

int id = 1; //Or whatever new id you have. 
String name = m_jtxtName.getText(); 
selectedCustomer = new CustomerInfo(name); //or whatever id you have. 
selectedCustomer.setName(name); //or whatever name you have. 

編輯:

東西是從類失蹤。無論是它需要setter方法(它只有現在干將,所以你不能設置其他屬性,名稱等),或者它需要有四個參數,像一個構造函數:

public CustomerInfo(String id, String searchKey, String taxid, String name, String postal) { 
    this.id = id; 
    this.searchKey = searchKey; 
    // etc 

在這種情況下,你可能有六個JTextField的在你的屏幕上,所以用戶可以填寫所有字段,並通過將所有參數傳遞給構造函數來創建Customerinfo對象。

+0

你可以告訴任何替代指定值的'selectedCustomer' – user2427965

+0

編輯與建議。 – nakosspy

+0

但我需要創建一個'構造函數CustomerInfo' ...如果是這樣的話? – user2427965

1

你不能簡單地鑄造一個字符串到CustomerInfo對象做到這一點,但你可以擴展你的CustomerInfo但你可以嘗試這樣的事:

public class CustomerInfo { 
    [...] 
    public static CustomerInfo createCustomerInfo(String data) { 
     // construct a CustomerInfo from the data in your String 

     return createdCustomerInfo; 
    } 
} 

我不知道你在說什麼數據字符串,所以我不能給你一個建議如何實現這一點。例如如果它是ID,你可以用它從數據庫中檢索CustomerInfo或類似的東西。

+0

我只是通過名字字符串 – user2427965

+0

如果這足以檢索正確的CustomerInfo然後去它,否則你應該重新考慮你的Dropdown的價值 –

+0

請再次檢查我的問題代碼 – user2427965