Hi an alle!
Ich habe einen kleinen Browser mit JEditorPane gebaut. Die HTML-Seite wird dort sauber geladen und angezeigt.
Ich spiele gerade ein bisschen rum, ob der JEditorPane überhaupt den Meta-Tag verstehen kann, z.B.:
<meta http-equiv=\"refresh\" content=\"5; URL=http://www.google.de\"/>
Damit habe ich vor, dass die Seite nach 5 Sekunden zu Google umleiten soll. Passiert nichts.
Es sieht so aus, dass er das überhaupt nicht versteht. Warum nicht?
Von JEditorPane habe ich mit:
- setText("<html><head><meta http-equiv=\"refresh\" content=\"5; URL=http://www.google.de\"/></head><body><a href=http://www.yahoo.com>click to go to yahoo</a><li>Hello</li></body></html>");
- setPage( "www.blabla.de/test.html" ); <-- In dieser HTML-Datei steht der selbe Inhalt wie oben von setText()!
Es geht mir nur darum, warum das JEditorPane den Meta-Tag nicht versteht?
Danke im voraus
Gruß
Iron Monkey
Ich habe einen kleinen Browser mit JEditorPane gebaut. Die HTML-Seite wird dort sauber geladen und angezeigt.
Ich spiele gerade ein bisschen rum, ob der JEditorPane überhaupt den Meta-Tag verstehen kann, z.B.:
<meta http-equiv=\"refresh\" content=\"5; URL=http://www.google.de\"/>
Damit habe ich vor, dass die Seite nach 5 Sekunden zu Google umleiten soll. Passiert nichts.
Es sieht so aus, dass er das überhaupt nicht versteht. Warum nicht?
Von JEditorPane habe ich mit:
- setText("<html><head><meta http-equiv=\"refresh\" content=\"5; URL=http://www.google.de\"/></head><body><a href=http://www.yahoo.com>click to go to yahoo</a><li>Hello</li></body></html>");
- setPage( "www.blabla.de/test.html" ); <-- In dieser HTML-Datei steht der selbe Inhalt wie oben von setText()!
Es geht mir nur darum, warum das JEditorPane den Meta-Tag nicht versteht?
Java:
import java.io.*;
import java.awt.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.awt.event.*;
public class HTMLPanel extends JPanel implements HyperlinkListener
{
private static final long serialVersionUID = 1L;
protected JEditorPane html;
private URL url;
private JButton goBut;
private JTextField inputJT;
private JPanel butPanel;
public HTMLPanel( String htmlText )
{
setLayout(new BorderLayout());
html = new JEditorPane("text/html", "");
html.setText( htmlText );
html.setEditable(false);
html.addHyperlinkListener(this);
JScrollPane scroller = new JScrollPane();
JViewport vp = scroller.getViewport();
vp.add(html);
// vp.setBackingStoreEnabled(true);
add(scroller, BorderLayout.CENTER);
goBut = new JButton("go");
inputJT = new JTextField("http://", 200);
butPanel = new JPanel();
butPanel.setLayout(new GridLayout(1, 2));
add(butPanel, BorderLayout.SOUTH);
butPanel.add(inputJT);
butPanel.add(goBut);
goBut.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
inputJT.setText((inputJT.getText()).trim());
if ((inputJT.getText()).length() > 0)
{
url = new URL(inputJT.getText());
linkActivated( url );
url = null;
}
}
catch (java.net.MalformedURLException me)
{
me.printStackTrace();
}
}
});
}
public void hyperlinkUpdate(HyperlinkEvent e)
{
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
linkActivated(e.getURL());
}
}
protected void linkActivated(URL u)
{
Cursor c = html.getCursor();
Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
html.setCursor(waitCursor);
SwingUtilities.invokeLater(new PageLoader(u, c));
}
class PageLoader implements Runnable
{
URL url;
Cursor cursor;
public PageLoader(URL u, Cursor c) {
url = u;
cursor = c;
}
public void run()
{
if (url == null)
{
html.setCursor(cursor);
Container parent = html.getParent();
parent.repaint();
}
else
{
Document doc = html.getDocument();
try
{
html.setPage(url);
}
catch (IOException ioe) {
html.setDocument(doc);
getToolkit().beep();
}
finally
{
url = null;
SwingUtilities.invokeLater(this);
}
}
}
}
public static void main(String args[])
{
JFrame frame = new JFrame("Roadster");
String htmlText = "<html><head><meta http-equiv=\"refresh\" content=\"5; URL=http://www.google.de\"/></head><body><a href=http://www.yahoo.com>click to go to yahoo</a><li>Hello</li></body></html>";
HTMLPanel myPanel = new HTMLPanel( htmlText );
frame.getContentPane().add(myPanel);
frame.setSize(500, 300);
frame.setVisible(true);
}
}
Danke im voraus
Gruß
Iron Monkey