2013-12-17 61 views
1

我正在研究一個有2個類的程序。第一個只是該程序的GUI。另一個是用所需數據創建新文件的代碼。在另一個類中使用字符串

我想使用文本,用戶在jTextField中寫入。但我的問題是,我無法將文本保存爲字符串,而是使用代碼在另一個類中調用以保存用戶輸入。

在Class NetworkComponentFrame

所以下面的代碼:

public class NetworkComponentFrame extends javax.swing.JFrame { 
/* GUI Code */ 
public static void main(String args[]) { 
String ID = jTextField1.getText(); 
/* other code */ 
}} 

而且在類NetworkComponent是目前下面的代碼:

public class NetworkComponent { 
public static void New(){ 
NetworkComponentFrame ID = new NetworkComponentFrame(); 
/*other code */}} 

的名字都只是一些佔位符。我希望這是足夠的信息來幫助我解決問題。

+1

也許讓可以在其他類中調用的字符串的公共getter/setter? – graviton

回答

0

您可以通過創建一個構造函數NetworkComponent或NetworkComponentFrame類的靜態屬性來傳遞值。 e.g

public class NetworkComponentFrame extends javax.swing.JFrame { 
/* GUI Code */ 
public String ID; 
public static void main(String args[]) { 
ID = jTextField1.getText(); 
/* other code */ 
}} 
在第二類

public class NetworkComponent { 
public static void New(){ 
s.o.p(NetworkComponentFrame.ID); 
/*other code */}} 
0

我想你想它周圍的其他方式。在GUI中實例化NetworkComponent,並在NetworkComponent中使用setter方法,並使用文本字段中的文本設置NetworkComponent對象中的文本。

public class NetworkComponent { 
    String ID; 

    public void setId(String text){ 
     ID = text; 
    } 
} 

public class NetworkComponentFrame extends javax.swing.JFrame { 
    NetworkComponent network = new NetWorkComponent(); <-- NetworkComponent object 
    JButton button = new JButton(); 
    JTextField textField = new JTextField(); 

    public NetworkComponentFrame(){ 
     button.addActionListener(new ActionListener(){ 
      public actionPerformed(ActionEvent e){ 
       String text = textField.getText(); 
       network.setId(text);     <-- set the ID here 
      } 
     }); 
    } 
} 
+0

我知道這聽起來很有趣,但老師說,我必須這樣做:/但無論如何感謝 – Pulsar

+0

告訴你的老師,這是不好的設計,實例化'Model'中的'View/Controller'。應該是相反的方式。看看他/她說什麼。 –

0

如果我理解是否正確,U可以定義字符串ID出來的主要功能,但在NetworkComponentFrame類爲公共還是你可能會達到它哪裏ü想ü創建您的類的對象之後。

如:

public class NetworkComponentFrame extends javax.swing.JFrame { 
public String ID_text; 
/* GUI Code */ 
public static void main(String args[]) { 
ID_text = jTextField1.getText(); 
/* other code */ 
}} 


public class NetworkComponent { 
public static void New(){ 
NetworkComponentFrame ID = new NetworkComponentFrame();< 
String test = ID.ID_text; 
/*other code */}} 

而且一些與你的示例代碼有問題。你確定你打電話給public static void main function in a non-static object?

擴展:你也可以使用getters和setter。

+0

這幫了我很多,但如果我只是做一個System.out.println(ID_text);在NetworkComponentFrame類中。 - >輸出是正確的。但在另一個類中是輸出「null」。問題在哪裏? – Pulsar

相關問題