我正在嘗試將我解析的XML數據放到我正在製作的GUI上。我們的目標是點擊「打開連接」按鈕(其中包含Open Connection類中的代碼)以打開與XML網頁的連接,然後使用「獲取標題」按鈕(其中包含代碼NPRInfo類)來獲取文章的標題和描述以顯示在文本框中。現在忽略關鍵字按鈕,一旦我解決了這個問題,我將開始研究。任何人都可以指出我做錯了什麼,我該如何解決它?感謝您的幫助!嘗試解析XML並將信息導入GUI
//import java.io.*;
//import java.io.BufferedReader;
//import java.io.InputStreamReader;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class NPRNews extends JFrame implements ActionListener {
JButton btnURL;
JButton btnKW;
JButton btnTD;
JTextArea txtArea;
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String[] args) throws Exception {
new NPRNews();
}
public NPRNews() throws Exception {
super("NPR News");
setupGUI();
NPRInfo();
registerListeners();
}
public void NPRInfo() throws Exception {
try {
DocumentBuilderFactory XmlBuilder = DocumentBuilderFactory.newInstance();
DocumentBuilder xBuilder = XmlBuilder.newDocumentBuilder();
Document xml = xBuilder.parse(new URL("http://www.npr.org/rss/rss.php?id=1001").openStream());
if(xml==null)
System.out.println("no XML DOM Document retrieved.");
xml.getDocumentElement().normalize();
NodeList nList = xml.getElementsByTagName("item");
if(nList==null)
System.out.println("No elements with tag name channel retrieved.");
int temp = 0;
for (temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE){
Element eElement = (Element) nNode;
txtArea.setText("Title : " + eElement.getElementsByTagName("title").item(0).getChildNodes().item(0).getNodeValue());
txtArea.setText("Description : "+ eElement.getElementsByTagName("description").item(0).getChildNodes().item(0).getNodeValue());
txtArea.setText("------------------------------------------------");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void setupGUI() {
JPanel pnlCanvas = new JPanel();
btnURL = new JButton("Connect to NPR");
pnlCanvas.add(btnURL);
btnKW = new JButton("NPR Keywords");
pnlCanvas.add(btnKW);
btnTD = new JButton("NPR Headlines");
pnlCanvas.add(btnTD);
txtArea = new JTextArea();
pnlCanvas.add(txtArea);
pnlCanvas.setLayout(new FlowLayout());
Container mainPanel = this.getContentPane();
mainPanel.add(pnlCanvas, BorderLayout.SOUTH);
mainPanel.add(txtArea, BorderLayout.CENTER);
this.setSize(500, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void registerListeners(){
btnURL.addActionListener(this);
btnKW.addActionListener(this);
btnTD.addActionListener(this);
}
public void openConnection() throws Exception{
URL url = new URL("http://www.npr.org/rss/rss.php?id=1001");
URLConnection connection = url.openConnection();
connection.connect();
}
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
if (e.getSource() == btnURL) {
try {
this.openConnection();
} catch (Exception e1) {
e1.printStackTrace();
}
}
if (e.getSource() == btnTD) {
try {
this.NPRInfo();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
問題是什麼? – MadProgrammer 2014-09-18 21:11:22
當我點擊GUI上的按鈕時,沒有任何反應。它應該只顯示標題和描述,它在system.out上工作得很好,但不在gui文本區域。唯一出現在文本區域的是----------------------------------- – BondyeLwa 2014-09-18 21:13:01