1

我有 2 个单独的 java 文件(主要和 RSS)。我想将我的 RSS 类的结果返回给我的 Main 类。现在结果显示在控制台中。我怎样才能将结果附加到我的 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();     
}

在我的 RSS 课程中:

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();
}

}

4

3 回答 3

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);
于 2012-05-05T08:22:21.137 回答
1

不要在您的方法中初始化文本区域,而是全局初始化它(如您的新闻变量),然后使用

Main.textArea.setText(String text);
于 2012-05-05T08:10:08.033 回答
0

您可以考虑观察者设计模式。这样,您不必JTextArea在类之间共享对象。

于 2012-05-05T08:33:05.177 回答