Relative Pfadangabe in JEditorPane zur lokalen Datei

Wambui

Aktives Mitglied
Hallo zusammen,

ich versuche gerade mit dem JEditorPane und einer lokalen HTML-Datei ein About-Fenster und Help-Fenster zu erstellen. Ich finde momentan keinen Zugang zu dieser Datei, die ich als "about.html" in dem Ordner "resources" abgelegt habe. "resources" liegt auf derselben Ebene wie "src" ebenfalls.
Wenn ich hinter "file://" den absoluten Pfad auf meinem Linux-System zur HTML-Datei angebe, dann funktioniert der Code. Mir fehlt die richtige relative Pfadangabe. Die Klasse JAbout.java liegt im Package "com.example.calculator" und dieses wiederum direkt unterhalb von "src".

Grüße

Wambui

Code:
package com.example.calculator;

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;


public class JAbout extends JEditorPane implements HyperlinkListener  {
	
	public JAbout(String url) {
		setEditable(false);
		addHyperlinkListener(this);
		
		try {
			setPage(new URL(url));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		JFrame f = new JFrame("Über uns...");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(600, 400);
		f.setIconImage(Toolkit.getDefaultToolkit().getImage(JAbout.class.getResource("/com/example/calculator/gui/resources/images16x16/currency_euro_yellow.png")));
		JButton okay = new JButton("Ok");
		f.getContentPane().add(new JScrollPane(new JAbout("file://resources/about.html")), BorderLayout.CENTER);
		f.getContentPane().add(okay, BorderLayout.SOUTH);
		f.setVisible(true);
	}

	@Override
	public void hyperlinkUpdate(HyperlinkEvent event) {
		HyperlinkEvent.EventType type = event.getEventType();
		
		if (type == HyperlinkEvent.EventType.ACTIVATED) {
			try {
				setPage(event.getURL());
			} catch (IOException e) {
				JOptionPane.showMessageDialog( this,
		                "Kann dem Link nicht folgen: "
		                  + event.getURL().toExternalForm(),
		                "Ladefehler",
		                JOptionPane.ERROR_MESSAGE );
			}
		}
	}

}

Der Stack trace hierzu redet von einem unbekannten Host:
java.net.UnknownHostException: resources
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at sun.net.ftp.impl.FtpClient.doConnect(FtpClient.java:958)
at sun.net.ftp.impl.FtpClient.tryConnect(FtpClient.java:918)
at sun.net.ftp.impl.FtpClient.connect(FtpClient.java:1013)
at sun.net.ftp.impl.FtpClient.connect(FtpClient.java:999)
at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:294)
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:393)
at javax.swing.JEditorPane.getStream(JEditorPane.java:769)
at javax.swing.JEditorPane.setPage(JEditorPane.java:433)
at com.example.calculator.JAbout.<init>(JAbout.java:31)
at com.example.calculator.JAbout.main(JAbout.java:46)
 
Moin,

habe jetzt nur kurz drübergeschaut - zumal nicht klar wird, in welcher Zeile die Exception auftritt ....

Aber dies hier
Java:
new JAbout("file://resources/about.html")
sieht als Pfad seeehr seltsam aus 🙁

Gruß
Klaus
 
Okay, ich habe entgegen "Java SE 8 Standard-Bibliothek" (Ausgabe 2014) Seite 834, zweiter Absatz statt "file://", wie empfohlen, jetzt "file:" versucht, dann klappt es.

Grüße
Wambui
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben