HTML ansehen in Java
-
Hi,
ich wollte einen kleinen HTML-Editor machen, nur so also Mini-Fenster, um dort etwas Werbung anzuzeigen. Ich dachte, man kann bestimmt dafür den JEditorPane benutzen, aber ich bekomme die untenstehenden Fehler!
Gibt es eine andere Möglichkeit in Java, so à la "CHTMLView" in C++?
Danke! Gruß,
Tobias
PS: Hier der Text, der den Error verursacht:
<!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK -->
<A HREF="http://partners.webmasterplan.com/click.asp?ref=214249&site=2680&type=b11&bnb=11" TARGET="_top">
<IMG SRC="http://banners.webmasterplan.com/view.asp?site=2680&ref=214249&b=11" BORDER="0" alt="Experte.de? ? einfach die Experten gefragt" WIDTH="88" HEIGHT="31"></a><br>
<!-- END PARTNER PROGRAM -->=======================================
java.security.AccessControlException: access denied (java.net.SocketPermission b
anners.webmasterplan.com resolve)
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:270)
at java.security.AccessController.checkPermission(AccessController.java:
401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1042)
at sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:448)
at sun.awt.SunToolkit.getImage(SunToolkit.java:491)
at javax.swing.text.html.ImageView.loadImage(ImageView.java:735)
at javax.swing.text.html.ImageView.refreshImage(ImageView.java:708)
at javax.swing.text.html.ImageView.sync(ImageView.java:680)
at javax.swing.text.html.ImageView.getPreferredSpan(ImageView.java:431)
at javax.swing.text.FlowViewRootView.setSize(BasicTextUI.java:
1528)
at javax.swing.plaf.basic.BasicTextUIForwardActionEvents.actionPerformed(Abstra
ctButton.java:1820)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:419)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:258)
at java.awt.Component.processMouseEvent(Component.java:5021).............
...........
..........
-
Hi,
die HTML-Datei die du anzeigen willst liegt wohl lokal auf der HDD, oder?
Und das was du da ausführst in java ist ein Applet, oder?
Da gibt's Zugriffsfehler weil Java-Applets in der Sandbox ablaufen und keinen IO-Zugriff auf die lokale platte haben.Die JEditPane ist schon die richtige Komponente.
Wie soll denn der Editor genau aussehen?See ya
-
Hi, danke für Deine Hilfe!
Also, die "HTML-Datei" ist einfach nur ein String, der im Java-Applet vorhanden ist:
<!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK -->
<A HREF="http://partners.webmasterplan.com/click.asp?ref=214249&site=2680&type=b11&bnb=11" TARGET="_top">
<IMG SRC="http://banners.webmasterplan.com/view.asp?site=2680&ref=214249&b=11" BORDER="0" alt="Experte.de? ? einfach die Experten gefragt" WIDTH="88" HEIGHT="31"></a><br>
<!-- END PARTNER PROGRAM -->Und soweit ich das begreife, sind die Links doch nicht lokal auf der Platte, oder?
Der Editor soll einfach ein paar Werbebilder anzeigen, auf die man dann klicken kann. Und falls jmd. draufklickt, so bekomme ich halt ein paar Cent... Leider komme ich momentan nicht darauf, wie man sowas in einem Applet gut realisieren kann... hast Du das vielleicht schon mal gemacht??
Viele Grüße aus dem Schwarzwald,
Tobias
-
vielleicht liegts daran, weil die tags <html><body>.....</body></html> fehlen!
gruss
cpt.oneeye
-
hi,
ja ich hab sowas schon mal gemacht, aber ich hab's als Servlet realisiert.
Also wenn ich dich richtig verstehe bin ich im Web und surfe, komme auf deine Seite und das Applet stellt mir dann diesen Link zur Verfügung auf den ich dann klicken kann und du Kohle kriegst? Sehe ich das richtig?
Irgendwie ist mir die Bedeutung des Editors noch nicht so ganz klar.See ya
-
Hi GPC!
Am <html>... liegts nicht, daß hab ich auch schon versucht! Aber die Bedeutung hast Du genau erkannt. Dort soll ein Link angezeigt werden & sobald Du darauf klickst, bekomme ich etwas Geld!
Allerdings bekomme ich es leider überhaupt nicht Gebacken, wegen dieser Fehlermeldung...
Gruß, Tobias
-
Salut,
hast du die Geschichte schon mal ins Web hochgestellt und dann ausprobiert oder nur auf deinem lokalen PC?
Ich gehe mal davon aus dass du mittels einer URL weiterleitest, das wird ja von Java standardmäßig bereitgestellt, oder?
wie sieht's mit n bisschen Code aus, dann wird's auch einfacher zum lösen?
Bye
-
Eentspricht das ungefähr deiner Vorstellung?
//Hier mal eine arg schlecht geproggte Version, sollte das was du willst ca. so aussehen? import java.applet.*; import java.awt.*; import java.awt.event.*; import java.net.URL; import java.net.MalformedURLException; public class Donate extends Applet { public void init() { setSize(200,50); setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { doLink(evt); }}); } public void doLink(MouseEvent evt) { try { //Hier knallst du dann deinen Link rein wo man dann 'spenden' kann ;-) homepage = new URL("http://www.gmx.de"); } catch (MalformedURLException ex0) { System.err.println("Nix gibt's: " + ex0.toString()); } getAppletContext().showDocument(homepage,"_blank"); } public void paint(Graphics g) { g.drawString(str,20,20); } String str="Please click to give me some lovin' (donations)"; URL homepage; }
-
Hi, vielen Dank!
An sich wäre es auf jeden Fall was, aber:
Ich mache bei so einem Affili-Programm mit (affili.de), da muss man dann auch gewisse Bilder von denen anzeigen und man bekommt einen kompletten Link (siehe den Code, "PARTNER PROGRAM", der auch so aufgerufen werden muss, da diese Bidler ASP-Dateien sind, also die vermutlich IP mitloggen & solche Sachen machen um zu vergleichen das man nicht bescheisst!!Ich hab jetzt versucht lokal eine HTML-Datei mit folgendem Code erstellt:
<!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK --> <A HREF="http://partners.webmasterplan.com/click.asp?ref=214249&site=2680&type=b11&bnb=11" TARGET="_top"> <IMG SRC="http://banners.webmasterplan.com/view.asp?site=2680&ref=214249&b=11" BORDER="0" alt="Experte.de? ? einfach die Experten gefragt" WIDTH="88" HEIGHT="31"></a><br> <!-- END PARTNER PROGRAM -->
Aber wenn ich die jetzt in einem JEditorPane anzeigen lasse, so bekomme ich eine Fehlermeldung, obwohl die HTML-Datei lokal ist!!!
So sieht übrigens meine Klasse aus: (ich kopier mal alles!)
// WerbePane // - Verwaltet die Werbelinks und zeigt diese an! // - benutzt einen JEditorPane als Mutterklasse! import java.net.URL; import javax.swing.JEditorPane; //import javax.swing.JTextPane ; //import javax.swing.text.html.HTMLEditorKit; class WerbePane extends JEditorPane { //class WerbePane extends JTextPane { // ======================================================================= // Konstruktor // ======================================================================= public WerbePane(int nLinks) { setText("keine Werbung vorhanden"); iLinks = 0; sumfak = 0; this.nLinks = nLinks; setted = false; faktoren = new int[nLinks]; namen = new String[nLinks]; } // ======================================================================= // Funktionen // ======================================================================= // Element adden public void add(String name, int faktor) { if( iLinks>=nLinks ) return; namen[iLinks] = name; faktoren[iLinks] = faktor; sumfak += faktor; iLinks++; } // "Zufallselement" bestimmen public int getRandom() { int val = (int)( Math.random() * (double)sumfak ); int sum = 0; for(int i=0;i<nLinks;i++) { sum+=faktoren[i]; if( sum>=val ) return i; } return nLinks-1; } // Text updaten - PROBLEM!!! public void update() { if( !setted ) { setContentType("text/html"); setEditable(false); //setEditorKit(new HTMLEditorKit()); setted = true; } //setVisible(false); //if( true ) return; if( nLinks==0 ) return; String link = namen[getRandom()]; try { URL url = new URL("file:./text.html"); //setText(link); setPage(url); } catch( Exception e ) { setText("<html><body>Error - Link kann nicht angezeigt werden</body></html>"); } } // ======================================================================= // globale Variablen // ======================================================================= boolean setted; int iLinks, nLinks; int faktoren[]; String namen[]; int sumfak; }
Könntest Du das mal ausprobieren und mir da erzählen, wo der Fehler liegt, bzw. wie man das besser machen kann? Ich hab leider keine bessere Idee dazu!
Vielen Dank!
Gruß, Tobias
PS: Wenn Du mal in Freiburg bist, dann lad ich Dich auch zu einem Bier ein!
-
Ich schau's mir mal an, versprechen kann ich dir aber nix.
Freiburg ist ja nicht so weit weg von Ravensburg. Schau mer mal.
-
Hi,
also bei mir hab ich's kompiliert, ohne es zu ändern, und es hat erstmal alles funktioniert.
Aber die schlechte Nachricht ist: die Art und Weise wie du das Problem angehst ist nicht so super. Einfach das JEditorPane darzustellen tut man eigentlich nicht. Da fehlt der Container, i.A. wäre das ein Applet oder Frame.Die gute Nachricht: Ich hab zwei Ideen:
Nr.1 : Du schreibst ein JApplet, in das fügst du die JEditorPane ein. Und jetzt der Gag:
Man schreibst einen Timer der, sagen wir mal alle 2 Minuten, die URL und damit den Werbebanner wechselt (natürlich auch die JEditorPane updated), wär das geil oder was?Nr. 2: Du schreibst ein JApplet das genauso groß ist wie die anzuzeigende Grafik, zeichnest die Grafik auf's Applet, dann addest du wie im Beispiel oben den MouseListener und linkst beim clicken einfach weiter. Hier wäre auch der Timer noch eine Möglichkeit um die Geschichte abwechslungsreich zu halten. (Ist aber irgendwie ein bisserl gecheatet)
Mehr fällt mir momentan auch nicht ein, deine Exception hab ich übrigens nicht gekriegt, keine Ahnung woher die kam.
Besagten Timer findest du mit der Klasse javax.swing.TimerAch, und wegen dem Bier, wenn ich sage dass ich auf dem Oktoberfest als Erkennungsmerkmal Lederhosen trage hilft dir das nicht, oder?
Bye
-
Hi GPC!
Vielen Dank für die Tips! Du Aber, Du hast echt dieses *dfsjklf* Fehlermeldung nicht bekommen? Hm...verdammt!... Ich hab etwas rumgetestet und bemerkt, daß die offensichtlich von diesem Bild kommen, also diesem "view.asp" ... irgendwie kommt mein Java (Windows, v1.3) damit nicht klar! Es scheint wohl wirklich an diesen ASP-Dateien zu liegen, denn z.B. das "Google-Bild" zu öffnen funzt einwandfrei!
Wegen des Bieres:
Lederhosen aufm Oktoberfest wären keine gute Idee, aber Lederhosen & "Schuhplatterl" (heißt das so? Du bist ja der Bayer... oder Schwabe! LOL) beim Weinfest in Freiburg wären sehr sehr gut!!! Ich würde dann zwar (aus Scham) nicht behaupten, daß ich Dich kenne, aber dennoch viele Fotos davon machen!
Viele Grüße aus Freiburg!
Tobias
-
Nochmal wegen der Fehlermeldungen:
Hast Du das lokal oder im Internet ausgeführt? Und konntest du wirklich das Bild "view.asp..." anzeigen?? Ich hab's bisher immer nur lokal versucht & da ging es halt nicht... Welche Java-Version hast Du?
Und: Hast Du's im Browser oder im Appletviewer angesehen (macht das einen Unterschied?)
Gruß, Tobias
-
hey,
hab's mir im Web angeschaut, hab das SDK 1.4.2 und natürlich (da online) im Netscape 7.
Aber frag mal bei denen nach ob sie nicht stattdessen ein GIF, JPG oder PNG nehmen könnten. Das ist weitaus kompatibler als asp.
Bye