2013-08-07 44 views
-1

我正在寫這個程序,最終我要從多維數組中獲取信息到JTextfields中,信息將取決於用戶在「item2」中輸入的內容。我的問題是我無法從「theHandler」類獲得任何類型的數據到JTextfields中。我嘗試使用「setText」,但它告訴我它不能將void更改爲字符串。我也可以使用我在Handler類中獲得的值作爲「piezas」,並在GUI上使用它,但是我無法將這個值從piezas返回給GUI。不知道在這裏做什麼。我已經準備好數組了,我只需要在同一個類上獲取值來編寫一個開關,以便我可以在JTextfields中獲取信息。因此基本上,我需要從處理程序類中獲取「piezas」值到Gui類(或者能夠從處理程序類中輸入JTextfields中的文本)。JAVA在JTextfield中放置文本

Thnx求助!


我創建一個JTextField是這樣的:

JTextField item1 = new JTextField(10); 

在這裏,我試圖設置文本,使其:

String setValue = item1.setText("text"); 

這是行不通的。爲什麼?


關於我的編輯:完整的代碼已被註釋掉,沒有被刪除。 --MightyPork

+1

以供將來參考,只粘貼問題代碼而不是整個程序,因爲您可能會發現沒有人會費心掃描無意義代碼的所有行,並最終不會回答 –

回答

6

setText()是正確的選擇,只有自己在一個陌生的方式使用它。

String setValue = item1.setText("text"); 

setText()沒有返回值,因此關於void錯誤。
您不能將void分配給變量。


試試這個:

item1.setText("text"); 

或者,如果你想要的值:

String setValue = "text"; 
item1.setText(setValue); 

或者:

String setValue; 
item1.setText(setValue = "text"); 
+0

在方法調用中進行賦值的問題可怕!應該避免 – nachokk

+0

只是一個口味問題,我認爲。但我也會添加其他選項。 – MightyPork

+0

工作,thnx傢伙,你搖滾。 – user2658007

1

我複製你的原代碼前到你的編輯。 Swing applications should be created and started on the event dispatch thread (EDT)。該TerminalVenta類應該是這個樣子:

TerminalVenta.java

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class TerminalVenta { 
    public static void main (String[] args){ 
    new TerminalVenta().start(); 
    } 

    public void start() { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
     createAndShowGUI(); 
     } 
    }); 
    } 

    public void createAndShowGUI() { 
    Gui ob = new Gui(); 
    ob.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ob.setSize(700,300); 
    ob.setVisible(true); 
    } 
} 

thehandler類:

public class thehandler implements ActionListener { 
    public void actionPerformed(ActionEvent event) { 
     String piezas = item2.getText(); 
     item1.setText(piezas); 
    } 
    } 

請注意,我不停的名字從你的原代碼,這個類。但是這個班級不遵守Java Beans naming conventions

使用item1.setText(item2.getText());的作品。

+0

Thnx!它現在正在工作! – user2658007