2013-07-04 17 views
-1

這裏是我的代碼。 他們來自兩個文件。如何發送數據時鼠標單擊正在運行function actionPerformed(ActionEvent l)

TClient.java

public class TClient{ 
public static void main(String[] agrs){     
     String ip=null;//string ip 
     LayoutO frame; 
     frame = new LayoutO(); 
     frame.setVisible(true);   
} 

LayoutO.java

public class LayoutO extends JFrame implements ActionListener { 
private JPanel contentPane; 
private JTextField textField; 
public LayoutO() { 

    textField = new JTextField(); 
    textField.setBounds(59, 157, 240, 39); 
    contentPane.add(textField); 
    textField.setColumns(10); 

    JButton btnSubmit = new JButton("SUBMIT"); 
    btnSubmit.setBounds(93, 236, 172, 77); 
    contentPane.add(btnSubmit); 

    btnSubmit.addActionListener(this); 
} 
public void actionPerformed(ActionEvent e) {    
    String str=textField.getText();//the aim string is here 
    } 
} 

我想利用這個GUI來獲得文本框的文本時,按下 「提交」 按鈕。

但是actionPerformed的函數沒有返回的東西。

我怎麼能得到目標字符串(目標字符串在LayoutO.java的最後一行)來評估 字符串'ip'(主字符串)。

+0

這段代碼有什麼問題? – Abubakkar

+0

這是什麼意思? 「獲取目標字符串來評估字符串'ip'」 – Tala

+0

@Tala當鼠標點擊時,可以從textField獲取字符串。我只是不知道如何在主函數中獲取 – DevilTour

回答

0

當您在Layout0構造函數添加一個偵聽器,如:

btnSubmit.addActionListener(this); 

這不會等待一個動作。我將簡單地「註冊」聽衆並返回。當一個事件發生時,actioPerformed將被調用。

您應該在TClient中創建一個方法來在輸入新字符串時執行操作。

監聽器:

public void actionPerformed(ActionEvent e) {    
    String str=textField.getText();//the aim string is here 
    TClient.newStringSubmited(str); 
} 

而且在TClient:

public void newStringSubmited(String str) { 

    //do what you want with the string 
} 
+0

的主要使用它請注意,這是有點不同,然後作者想要的。主線程將結束,newStringSubmited將在與actionPerformed相同的線程中執行。 – Tala

+0

你說得對。如果他想在這個字符串將無法正常工作。而且應該創建一個線程來擺脫EDT。 –

+0

@jeanwaghetti謝謝。這實際上是我想要的。雖然主要是結束了,但該計劃還沒有結束。可以通過actionPerformed方法繼續工作 – DevilTour

1

的問題是:應該在哪裏輸入 「瞄準」 字符串去?進入TClient類或它的一個實例? TClient中的字符串「ip」在main方法內部,因此它是一個局部變量,它只存在於此方法的執行時間內。

想想輸入字符串應該放在哪裏。然後在那個地方製作一個屬性或方法,以便可以放在那裏。 ActionListener然後需要對該位置的引用,並可以將輸入字符串設置爲該目標變量或將其傳遞給用於處理的方法。

相關問題