2015-10-20 56 views
0

初始化一個變量「輸入」,我想將文本存儲到它。這樣我可以使用該變量執行搜索操作。通過下面的代碼它沒有采取變量輸入。提前致謝。請任何人幫我如何將文本字段值存儲到變量中以便在java swing中進一步使用它?

字符串輸入;

jb.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent ae) 
     { 
      input = jt.getText(); // problem occurs here 
      jl.setText(input); 
     } 
    }); 
+0

問題是什麼?你有錯誤信息嗎?當'jb'的監聽器被調用時,你能驗證'jt'是否有文本嗎? – CubeJockey

+0

當你說問題時,究竟發生了什麼? – Pavan

+0

@Trobbins如果他沒有文字,他不會得到一個仍然有效的空字符串。 – Pavan

回答

0

注:,如果你想你的程序的任何地方使用的對象,請在程序的頂部聲明。像那樣

import java.awt.EventQueue; 

public class MyExample { 

    private JFrame frame; 
    String input; 

您不應該在匿名類中聲明'輸入'類型。通過這種方式,您有一個錯誤,如'最終的局部變量輸入無法分配,因爲它是在封閉類型中定義的'。爲了避免這種錯誤,請確保你寫的代碼,這樣,

 jb.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       String input = jt.getText(); 
       jl.setText(input); 
      } 
     }); 

所以,你可以把輸入的JLabel。

+1

如果OP想要在內部類的上下文之外使用「輸入」值,該怎麼辦? – MadProgrammer

+0

@MadProgrammer對不起,我可能是錯的,我已經爲這個問題創建了一個新項目並進行了測試。但是如果我把'字符串輸入'放在外面,它會給我一個錯誤,所以我搜索了這個錯誤,發現一個匿名類創建它自己的副本並將這些對象放入它的副本中。這就是爲什麼你在外面定義的對象和在裏面的對象不再是同一個對象。 – Earthx9

+0

除非它是一個實例字段... – MadProgrammer

相關問題