2013-05-28 62 views
0

我的目標是比較兩個字符串。一個字符串就是來自用戶的文本字段(txt)的輸入,然後,如果它們匹配,則將文本字段更改爲第三個字符串(msg)。這是什麼讓我不能使用我的按鈕或比較字符串?

但是,當我爲txt字符串輸入正確的字符並單擊按鈕時,什麼都不會發生。爲什麼它不會更改爲「Derk?」,msg字符串?

代碼:

package levels; 


import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 


public class LevelOne extends JFrame implements ActionListener{ 

    private JTextField input = new JTextField("Ich spielen Golf.");  
    private JButton submit = new JButton("Check sentence"); 


    public void one(){ 

     setTitle("Conjugator"); 
     setSize(400,400); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 


     setLayout(new BorderLayout()); 
     setContentPane(new JLabel(new ImageIcon("images/LevelOneBG.gif"))); 
     setLayout(new FlowLayout()); 

     JTextArea area = new JTextArea("You enter a castle. A Goblin demands you correct his sentences!"); 
     add(area); 
     setVisible(true); 

     JButton submit = new JButton("Check sentence"); 
     submit.addActionListener(this); 
     add(submit); 
     setVisible(true); 
     JTextField input = new JTextField("Ich spielen Golf."); 
     input.setActionCommand("input"); 
     add(input); 
     input.addActionListener(this); 
     setVisible(true); 


    } 


    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == submit) { 

      String txt = (input.getText()); 
      String test = ("test"); 
      String msg = ("Derk?"); 

      if (txt.equals(test)){ 
       //after check 
       input.setText(msg); 
      } 
     } 
    } 
} 
+0

邊評論:你並不需要所有的括號內。 'String txt = input.getText(); String test =「test」; String msg =「Derk?」;'也會工作... – assylias

+0

謝謝,我討厭括號,所以我在安全方面進行了空氣處理。任何線索是什麼導致我的問題? – user2426434

回答

2

問題是你重新定義按鈕,在你的一個方法提交。在您的一個方法將其清除

JButton submit = new JButton("Check sentence"); 

和線

JTextField input = new JTextField("Ich spielen Golf."); 

,它應該工作的罰款。

1

原因是你有兩個JTextFields和兩個JButtons。例如,對於JTextField中,則具有一個定義爲你的類的一個實例變量:

JTextField input = new JTextField("Ich spielen Golf."); 

只有後者被添加到你的幀:您在one方法中創建

private JTextField input = new JTextField("Ich spielen Golf."); 

和另一個但是您在actionPerformed方法中引用前者。

最簡單的方法解決它:在你one方法,刪除這些行:

JTextField input = new JTextField("Ich spielen Golf."); 
JButton submit = new JButton("Check sentence"); 
+0

謝謝先生!你們對我的幫助非常大,並且比我過去在這個論壇上的經驗更加務實和禮貌。非常非常感謝你。 – user2426434

相關問題