2013-10-29 63 views
0

我一直在仔細查看這個網站,試圖找到我的問題的答案,但我一直無法找到它。我是Java的新手,如果我使用不正確的術語,請耐心等待。在不同類的jTextArea中顯示類中數據的問題

我有兩個文件,MainJFrame和Class1。我需要使用給定的Display()方法在MainJFrame的jTextArea中顯示Class1的參數。這聽起來很容易,因爲我應該簡單地能夠從MainJFrame調用Class1的Display()方法(在MainJFrame中建立Class1的實例之後)並以此方式顯示,但問題是Display()方法是void功能。 這裏是給定的代碼:

public void Display(JList list) 
    { 
    DefaultListModel model = new DefaultListModel(); 

    model.add(0, item1 + " " + item2 + " " + item3); 
    list.setModel(model); 
    } 

有什麼辦法來提取這些信息,這樣我可以在我的MainJFrame使用它,而不訴諸其保存到一個文件或修改代碼?從我沒有經驗的角度來看,這看起來不太可能,並且每次我嘗試修改此代碼以例如將字符串返回給MainJFrame時,它都被我的教師拒絕。我真的沒有想法了。

我很欣賞你的意見。

+1

是否有一個原因,你都不願意修改代碼?在調用方法時,Java是「按值傳遞」的,例如,上面的方法傳遞了一個參數'list',它變成了一個局部變量。一旦你添加了模型,因爲列表沒有被返回,本地變量很可能被垃圾收集器擦除。 – Levenal

回答

1

但問題是,鑑於顯示器()方法是一個無功能

有一個在返回void沒有問題。由於JTextArea是可變的,Java是傳址值,你可以簡單地做您MainFrame類以下內容:

JTextArea textArea = new JTextArea(5, 30); 

Class1 class1 = new Class1(); 
class1.display(textArea); 

getContentPane().add(new JScrollPane(textArea)); 

而且class1將負責根據需要設置文本的。例如:

public void display(JTextArea textArea){ 
    textArea.setText("I'm setting text from a Class1's object!"); 
} 

我認爲你的老師是試圖強調,沒有必要返回任何值做到這一點。

提出建議閱讀:Mutable and Immutable ObjectsPass-by-Value Please

+1

這正是我需要的東西。我想我沒有想到它,並意識到我可以像任何基本變量一樣在類之間傳遞文本框之類的東西。我一直試圖以相反的方式去做。感謝您的幫助。 – user2931783

+0

不客氣! :) – dic19