請問要如何讓兩個Frame間,能互相傳遞資料 |
尚未結案
|
deren
一般會員 發表:7 回覆:4 積分:2 註冊:2004-10-29 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
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 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
引言: 不好意思,我想再請問一下 我在編輯的時候,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 發送簡訊給我 |
首先,謝謝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 發送簡訊給我 |
|
deren
一般會員 發表:7 回覆:4 積分:2 註冊:2004-10-29 發送簡訊給我 |
引言: 請問你是加在哪?又你是否以執行該自訂函式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 發送簡訊給我 |
引言: 我的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類 別的按鈕事件後~在去列印該變數~當可印證結果~ 最後~~~ 祝 新年快樂^^ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |