2012-05-05 15 views
1

私は2つの独立したJavaファイル(メイン& RSS)を持っています。 RSSクラスの結果をメインクラスに戻したいと思います。今すぐ結果がコンソールに表示されます。代わりにJTextAreaに結果を追加するにはどうしたらいいですか?ありがとう!私のRSSクラスで結果を別のJavaクラスのJTextAreaに追加する方法は?

public void news() 
{ 
    news = new JPanel(); 
    news.setLayout(null); 

    JTextArea textArea = new JTextArea(); 
    textArea.setBackground(SystemColor.window); 
    textArea.setBounds(10, 11, 859, 512);  
    textArea.setWrapStyleWord(true); 
    news.add(textArea); 

    TextSamplerDemo reader = TextSamplerDemo.getInstance(); 
    reader.writeNews();  
} 

:私のメインクラスで

public void writeNews(){ 
try{     
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
    URL u = new URL("http://rss.cnn.com/rss/cnn_world.rss"); 

    Document doc = builder.parse(u.openStream()); 
    NodeList nodes = doc.getElementsByTagName("item"); 

    for(int i=0;i<nodes.getLength();i++){ 
     Element element = (Element)nodes.item(i); 

     System.out.println("Title: " + getElementValue(element,"title")); 
     System.out.println("Link: " + getElementValue(element,"link"));    
    } 
} 

catch(Exception ex){ 
    ex.printStackTrace(); 
} 

}

答えて

2

RSS.writeNewsメソッドを変更して解析されたRSSフィードを返すと、Mainクラスは簡単にテキスト領域にデータを挿入できます。

// In the RSS class 
public String writeNews() 
{ 
    String result = ""; 
    ... 
    // Instead of printing to console, store text in a String variable 
    result += "Title: " + getElementValue(element,"title"); 
    result += "Link: " + getElementValue(element,"link"); 
    ... 
    // Return result 
    return result 
} 

// In the Main.news method 
String rssNews = reader.writeNews(); 
textArea.append(rssNews); 
+0

ありがとうございました!それは今働きます! –

1

の代わりにあなたの方法でテキスト領域を初期化し、あなたのニュースのように(グローバルに初期化しますvar)を使用してから

Main.textArea.setText(String text); 
0

あなたはObserver Design Patternを検討することができます。この方法では、クラス間でJTextAreaオブジェクトを共有する必要はありません。

関連する問題