Mein Ziel ist es, einen kleinen RSS-Reader zu bauen.
Das habe ich so weit auch hinbekommen, allerdings nur für die Konsole.
Nun möchte ich die ganze Geschichte gerne in einem Fenster laufen lassen.
Hier mal mein Code:
Starte ich das Programm, holt er sich die Überschriften von Golem.de aus der RSS-Datei und zeigt sie im Fenster an.
Nun würde ich es gerne hinbekommen, dass wenn man in das JTextField eine neue URL zu einer RSS_Datei eingibt, diese dann im Fenster angezeigt wird.
Mein Plan war folgender: wenn ich den Button Drücke, liest der ActionListener den Text aus dem Textfield und schreibt ihn in die Klassen-Variable.
Nun wird der Konstruktor neu aufgerufen und damit die Überschriften erneuert.
Völliger Schwachsinn oder möglich?
Egal ob möglich oder nicht, ich wäre für jede Hilfe dankbar!
Das habe ich so weit auch hinbekommen, allerdings nur für die Konsole.
Nun möchte ich die ganze Geschichte gerne in einem Fenster laufen lassen.
Hier mal mein Code:
Code:
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RSSReader extends JFrame implements ActionListener{
//RSS-Datei
public static String rssFeed = "http://www.golem.de/rss.php?feed=RSS2.0";
Container c;
JTextField urleingabe;
//Konstruktor
public RSSReader() {
c = getContentPane();
try {
RSSDocument rss = new RSSDocument();
URL rssUrl;
rssUrl = new URL(RSSReader.rssFeed);
rss.loadDocument(rssUrl);
Vector items = rss.getRssItems();
c.setLayout( new GridLayout( (items.size() + 2), 1, 1, 1 ) );
JPanel url = new JPanel( new FlowLayout(FlowLayout.RIGHT) );
JLabel urlbeschriftung = new JLabel("URL: ");
urleingabe = new JTextField("http://", 20);
urleingabe.setCaretPosition( urleingabe.getText().length() );
JButton urlgo = new JButton("Go");
urlgo.addActionListener(this);
urlgo.setActionCommand("go");
url.add(urlbeschriftung);
url.add(urleingabe);
url.add(urlgo);
c.add(url);
JPanel infos = new JPanel();
JLabel anbieter = new JLabel(rss.getTitle() + " -");
JLabel beschreibung = new JLabel(rss.getDescription());
infos.add(anbieter);
infos.add(beschreibung);
c.add(infos);
JLabel nr[] = new JLabel[items.size()];
JLabel topic[] = new JLabel[items.size()];
JPanel panel[] = new JPanel[items.size()];
for (int i = 0; i < 20; ++i) {
RSSItem ri = (RSSItem) items.get(i);
if ( i < 9 ) {
nr[i] = new JLabel( "Nr. 0" + (i + 1) + " ");
}
else {
nr[i] = new JLabel( "Nr. " + (i + 1) + " ");
}
topic[i] = new JLabel( ri.getTitel() );
panel[i] = new JPanel(new FlowLayout(FlowLayout.LEFT));
panel[i].add(nr[i]);
panel[i].add(topic[i]);
c.add(panel[i]);
}
}
catch (MalformedURLException e) {
System.out.println("URL ist nicht korrekt!");
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
RSSReader reader = new RSSReader();
reader.setSize(600, 750);
reader.setTitle("RSS Reader");
reader.setResizable(false);
reader.setVisible(true);
reader.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if ( e.getActionCommand() == "go" ) {
String newurl = urleingabe.getText();
rssFeed = newurl;
}
}
}
Starte ich das Programm, holt er sich die Überschriften von Golem.de aus der RSS-Datei und zeigt sie im Fenster an.
Nun würde ich es gerne hinbekommen, dass wenn man in das JTextField eine neue URL zu einer RSS_Datei eingibt, diese dann im Fenster angezeigt wird.
Mein Plan war folgender: wenn ich den Button Drücke, liest der ActionListener den Text aus dem Textfield und schreibt ihn in die Klassen-Variable.
Nun wird der Konstruktor neu aufgerufen und damit die Überschriften erneuert.
Völliger Schwachsinn oder möglich?
Egal ob möglich oder nicht, ich wäre für jede Hilfe dankbar!