線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2067
推到 Plurk!
推到 Facebook!

請問要如何讓兩個Frame間,能互相傳遞資料

尚未結案
deren
一般會員


發表:7
回覆:4
積分:2
註冊:2004-10-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-08 02:06:01 IP:218.164.xxx.xxx 未訂閱
我現在有兩個Frame,假設它們為Frame1,Frame2 Frame1是程式主要的介面,Frame2只需要作秀圖的動作 介面形式大概就是,Frame1上有一個按鈕還有一些空格 讓使用者在空格中填入參數,然後按下按鈕,會將結果秀在Frame2上 現在我遇到一個問題,就是如何讓Frame1的資料傳到Frame2 PS:兩個介面分別測試過,都是可執行的 希望各位先進可以給小弟一點方向! 謝謝!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-08 04:20:01 IP:203.204.xxx.xxx 未訂閱
Hi~deren 可以先將你的兩個frame在Application中initialize,並在frame1寫一個 函式如setFrame2()來呼叫frame2 EX: 
 
public class Application1{ 
 Frame1 frame1=new Frame1(); 
 Frame2 frame2=new Frame2(); 
  ... 
 public Application1(){ 
  ... 
 frame1.setVisible(true); 
 frame2.setVisible(false); // frame2先hide 
 frame1.setFrame2(frame2); // 讓frame1知道frame2 
  ... 
 } 
} 
在frame1中定一個Frame形態的myFrame2變數還有一個setFrame2()的方法
public class Frame1 extends JFrame{ 
 Frame myFrame2=null; 
  ... 
 public void setFrame2(Frame frame){ 
  this.myFrame2=frame; 
 } 
 ... 
 void jButton1_actionPerformed(ActionEvent e){ 
   myFrame2.setValue("value"); // 你要傳的值 
   myFrame2.setVisible(true);  // 顯示出frame2
 } 
 ... 
} 
deren
一般會員


發表:7
回覆:4
積分:2
註冊:2004-10-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-08 10:17:31 IP:218.164.xxx.xxx 未訂閱
不好意思,我想再請問一下 我在編輯的時候,JBuilder顯示這一行有錯誤 myFrame2.setValue("value"); 好像是找不到這個屬性,請問這個屬性要怎麼使用?
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-08 18:18:42 IP:203.204.xxx.xxx 未訂閱
引言: 不好意思,我想再請問一下 我在編輯的時候,JBuilder顯示這一行有錯誤 myFrame2.setValue("value"); 好像是找不到這個屬性,請問這個屬性要怎麼使用?
不好意思~我沒有說清楚~你應該在你的frame2裡面加上 類似這個函式setValue("value")專門接收當frame1的btn按下去時 傳遞(初始化)給frame2的參數 ex:
 
public class Frame2 extends JFrame{ 
  String setValue="";
  ... 
 public void setValue(String value){ 
  this.setValue=value; 
 } 
 ....//針對得到的setValue進行處理...
這例子是簡單的顯示兩個frame在application中傳遞參數的範例~ 你應該依照你的需要修改~
deren
一般會員


發表:7
回覆:4
積分:2
註冊:2004-10-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-09 00:04:01 IP:218.164.xxx.xxx 未訂閱
首先,謝謝rogan321兄在新年期間也給我這樣詳細的回答 但是因為我真的對這個部分非常沒概念,所以我還想再問一個問題 我這個部分的程式,大概長這個樣子 ================================================ public class Application1{ Frame1 frame1=new Frame1(); Frame2 frame2=new Frame2(); ... public Application1(){ ... frame1.setVisible(true); frame2.setVisible(false); // frame2先hide frame1.setFrame2(frame2); // 讓frame1知道frame2 ... } } public class Frame1 extends JFrame{ Frame myFrame2=null; ... public void setFrame2(Frame frame){ this.myFrame2=frame; } ... void jButton1_actionPerformed(ActionEvent e){ myFrame2.setValue("value"); // 你要傳的值 myFrame2.setVisible(true); // 顯示出frame2 } ... public class Frame2 extends JFrame{ double setValue; ... public void setValue(String value){ this.setValue=value; } } ================================================ 基本上都是照著rogan321兄的程式去作,只不過傳的參數改成double 不過我在後面的測試程式中,又加入了兩條式子 System.out.println(this.setValue); System.out.println(setValue); 但是出現的結果都是0,這讓我相當困惑! 是否能夠幫我解答,我到底該如何在Frame2中讀取我已讀到的資料呢? 謝謝再次幫忙!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-09 00:20:02 IP:203.204.xxx.xxx 未訂閱
請問你是加在哪?又你是否以執行該自訂函式setValue()的動作了? JAVA比C還要嚴謹~如果你沒給初始值~它會自動給值0 當你並沒有執行該函式的動作時~它在程式中的保留區塊上還是指向一個初始值 大多是0
deren
一般會員


發表:7
回覆:4
積分:2
註冊:2004-10-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-09 00:31:10 IP:218.164.xxx.xxx 未訂閱
引言: 請問你是加在哪?又你是否以執行該自訂函式setValue()的動作了? JAVA比C還要嚴謹~如果你沒給初始值~它會自動給值0 當你並沒有執行該函式的動作時~它在程式中的保留區塊上還是指向一個初始值 大多是0
我的Frame2架構如下 public class Frame2 extends JFrame { double setValue=0; public setValue(double value) { this.setValue=value; } public Frame2() { ... System.out.println(this.setValue); System.out.println(setValue); ... } } 如果我想的沒錯,setValue值應該會被改的,但實際上似乎沒有,所以我很困擾 我知道這問題有點笨,還望多多見諒!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-09 00:47:29 IP:203.204.xxx.xxx 未訂閱
引言: 我的Frame2架構如下 public class Frame2 extends JFrame { double setValue=0; public setValue(double value) { this.setValue=value; } public Frame2() { ... System.out.println(this.setValue); System.out.println(setValue); ... } } 如果我想的沒錯,setValue值應該會被改的,但實際上似乎沒有,所以我很困擾 我知道這問題有點笨,還望多多見諒!
問題就在上方紅色地方~public Frame2()是建構元(物件產生時馬上執行) ~Frame2類別產生時要初始這個 Frame2類別物件的程序一定首先執行的"函式" 所以這時候你根本還沒執行到你的自訂函式,當然~列印出來的是程式分配給該變數的初始值~再加上你宣告時,沒指定多少 那就是給0了~你應該在執行Forme1類 別的按鈕事件後~在去列印該變數~當可印證結果~ 最後~~~ 祝 新年快樂^^
系統時間:2024-05-09 17:39:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!