2012-06-02 43 views
-3

我運行此腳本,當我點擊添加它的工作原理,並增加了2盒,但是當我點擊任何其他按鈕,它不開箱的答覆。我不知道爲什麼消息框不打開與任何人的答案,但添加任何人都可以解釋並告訴我一個修復。代碼:問題與ActionListener的

import javax.swing.JFrame; 
import javax.swing.JButton; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JOptionPane; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JTextField; 

public class Gui extends JFrame{ 

    private JButton reg; 
    private JButton reg2; 
    private JButton reg3; 
    private JButton reg4; 
    private JTextField text; 
    private JTextField text2; 
    private JTextField text3; 
    private JTextField text4; 
    private JTextField text5; 
    private JTextField text6; 
    private JTextField text7; 
    private JTextField text8; 


    public Gui(){ 
     super("Buttons"); 
     setLayout(new FlowLayout()); 



     text = new JTextField(20); 
     text2 = new JTextField(20); 
     text3 = new JTextField(20); 
     text4 = new JTextField(20); 
     text5 = new JTextField(20); 
     text6 = new JTextField(20); 
     text7 = new JTextField(20); 
     text8 = new JTextField(20); 
     reg = new JButton("Add"); 
     reg2 = new JButton("Divide"); 
     reg3 = new JButton("Multiply"); 
     reg4 = new JButton("Subtract"); 

     add(text); 
     add(text2); 
     add(reg); 
     add(text3); 
     add(text4); 
     add(reg2); 
     add(text5); 
     add(text6); 
     add(reg3); 
     add(text7); 
     add(text8); 
     add(reg4); 



     handlerClass handler = new handlerClass(); 
     reg.addActionListener(handler); 
     reg2.addActionListener(handler); 
     reg3.addActionListener(handler); 
     reg4.addActionListener(handler); 






    } 

    public class handlerClass implements ActionListener{ 
     public void actionPerformed(ActionEvent event){ 
      String st = text.getText(); 
      String st2 = text.getText(); 
      String st3 = text.getText(); 
      String st4 = text.getText(); 
      String st5 = text.getText(); 
      String st6 = text.getText(); 
      String st7 = text.getText(); 
      String st8 = text.getText(); 

      int txt1 = Integer.parseInt(st); 
      int txt2 = Integer.parseInt(st2); 
      int txt3 = Integer.parseInt(st3); 
      int txt4 = Integer.parseInt(st4); 
      int txt5 = Integer.parseInt(st5); 
      int txt6 = Integer.parseInt(st6); 
      int txt7 = Integer.parseInt(st7); 
      int txt8 = Integer.parseInt(st8); 


      if(event.getActionCommand()=="Add"){ 
       int add=txt1+txt2; 
       JOptionPane.showMessageDialog(null, String.format("Answer: %s", add)); 
      } 

      if(event.getActionCommand()=="Divide"){ 
       if(txt4>0){ 
        int add2=txt3/txt4; 
         JOptionPane.showMessageDialog(null, String.format("Answer: %s", add2)); 
       }else{ 
       JOptionPane.showMessageDialog(null, String.format("Cannot divide by zero")); 
       } 
      } 

      if(event.getActionCommand()=="Multiply"){ 
       int add3=txt5*txt6; 
       JOptionPane.showMessageDialog(null, String.format("Answer: %s", add3)); 
      } 

      if(event.getActionCommand()=="Subtract"){ 
       int add4=txt7-txt8; 
       JOptionPane.showMessageDialog(null, String.format("Answer: %s", add4)); 
      } 
     } 
    } 
} 
+0

我沒有得到一個錯誤,他們只是不打開 –

+2

如果你正在尋找幫助,你需要做一個更簡單的測試案例。請參閱http://sscce.org。 –

+0

還可以考慮使用調試器,日誌語句/對話框等嘗試縮小問題的範圍。 –

回答

2

不要使用==來比較字符串。改爲使用equals(...)equalsIgnoreCase(...)方法。記者瞭解到,==檢查兩個對象是相同的這是不是你感興趣。在另一方面檢查的方法,如果兩個字符串都以相同的順序相同的字符,這是這裏最重要的。因此,而不是

if (fu == "bar") { 
    // do something 
} 

做,

if ("bar".equals(fu)) { 
    // do something 
} 

,或者

if ("bar".equalsIgnoreCase(fu)) { 
    // do something 
} 
1

==比較refrences的平等。

.equals()比較字符串的值。

if("Multiply".equals(event.getActionCommand())) 
{ 

} 
+0

我建議你先把字符串字面值先避免不知不覺地拋出一個NPE。即if(「Multiply」.equals(event.getActionCommand())){}'。 1+ –

+0

@HovercraftFullOfEels GREAT !!!很高興看到您的評論!日Thnx ... –