2011-08-23 26 views
1

我今天已經打大約有GUI和嘗試不同的元素添加到它,組合框和一個JButton問題

public void actionPerformed(ActionEvent e) 
    { 
     if (e.getSource() == jButton1)        
     { 
      //Do Something 
     } 

     JComboBox cb = (JComboBox)e.getSource(); 
     String petName = (String)cb.getSelectedItem(); 

     if(petName == "Cat") 
     { 
      //Do Something 
     } 

    } 

當我點擊的jButton1它做什麼,我想要它做的,當我選擇「貓」從組合框它做什麼,我想要它做的,但只有當我點擊的jButton1,而不是當我選擇貓它給了我下面的錯誤

javax.swing.JButton中的不能轉換爲javax.swing.JComboBox中

任何想法顯然與comboxbox代碼有關,當我從JCombobox中刪除代碼時,錯誤不會出現。

任何幫助將是不錯的,不做作業只是擺弄,看是否我可以學到新東西

回答

5

首先,使用==不比較字符串,請使用equals方法。也就是說,改變

petName == "Cat" 

petName.equals("Cat") 

==比較引用,而不是對象的引用參考)

相關問題:


關於「JButton不能轉換成JComboBox」 - 發佈,在我看來,你好像只是在那裏忘記了else。請嘗試以下操作:

if (e.getSource() == jButton1) { 
    //Do Something 
} else { 

    JComboBox cb = (JComboBox)e.getSource(); 
    String petName = (String)cb.getSelectedItem(); 

    if(petName == "Cat") { 
     //Do Something 
    } 
} 

(或簡單地從一旦你有相關的JButton的Do something完成的方法return

+0

謝謝你的建議對於==和.equals,應該自己發現的是其中一個,至於其他它仍然給我錯誤,當我加上這個。 – user445714

+0

錯誤是由於'e.getSource()'返回'JButton'。換句話說,當事件的來源是一個'JButton',並且你堅持試圖將它轉換成'JComboBox'時,就會發生錯誤。看看你的程序邏輯並試圖找出事件的起源,並確保如果它來自'JButton',則不要試圖將其轉換爲'JComboBox'。 – aioobe

+0

這個問題會圍繞這個jButton1.addActionListener(this); petList.addActionListener(this);在構造函數 – user445714