Mein erster Internet Explorer

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi
1., wenn ich oben ne adresse eingebe, dann geht mein programm nicht auf diese website,
2., wenn ich versuche etwas auf der website anzuklicken, dann geht das auch nicht
kann mir einer helfen?
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Explorer extends JFrame
{
	private JScrollPane jsp;
	private JEditorPane editorpane;

	
	public Explorer()
	{
		super("JExplorer_1.0");
		Toolkit t = Toolkit.getDefaultToolkit();
		final Dimension d = t.getScreenSize();
		setSize(d);setVisible(true);
		
		    File start = new File("F:/FUTUR.PROGRAMS/Explorer/Startseite.txt");
	   	    String startString = new String(getContents(start));
	   	  
		    final JTextField Local = new JTextField();
	   	    Local.setBounds(400,0,400,25);Local.setBackground(Color.black); Local.setForeground(Color.white);
			add(Local); Local.setVisible(true); Local.setText("http://"+getContents(start));
	   	  

   	  
   	    
   	     
   		editorpane = new JEditorPane();
		editorpane.setEditable(true);

		try {
			editorpane.setPage(new URL("http://"+startString));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		jsp = new JScrollPane(editorpane); jsp.setBounds(50,50,d.width-100,d.height-100);
		add(jsp);
		
		JButton Go = new JButton("Bestätigen");
		Go.setBackground(Color.black); Go.setForeground(Color.white); 
		Go.setBounds(800,0,200,25); add(Go);

		Go.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				editorpane = new JEditorPane();
				try {
					editorpane.setPage(new URL("http://"+Local.getText()+"/"));
				} catch (MalformedURLException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
				
				jsp = new JScrollPane(editorpane);			
				remove(jsp);
					
				add(jsp);
				
			}
	    });
		   
   	     


		setLayout(null);
	}
	public static void main(String[]args)
	{
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				new Explorer();
			}
		});
	}
	
	 static public String getContents(File aFile) 
	 {
		    StringBuilder contents = new StringBuilder();  
		    try {
		      BufferedReader input =  new BufferedReader(new FileReader(aFile));
		      try {
		        String line = null; 
		        while (( line = input.readLine()) != null){
		          contents.append(line);
		        }
		      }
		      finally {
		        input.close();
		      }
		    }
		    catch (IOException ex){
		      ex.printStackTrace();
		    }
		    
		    return contents.toString();
		  }
	  static public void setContents(File aFile, String aContents)
		                                 throws FileNotFoundException, IOException {
		    if (aFile == null) {
		      throw new IllegalArgumentException("File should not be null.");
		    }
		    if (!aFile.exists()) {
		      throw new FileNotFoundException ("File does not exist: " + aFile);
		    }
		    if (!aFile.isFile()) {
		      throw new IllegalArgumentException("Should not be a directory: " + aFile);
		    }
		    if (!aFile.canWrite()) {
		      throw new IllegalArgumentException("File cannot be written: " + aFile);
		    }
		    Writer output = new BufferedWriter(new FileWriter(aFile));
		    try {
		      output.write( aContents );
		    }
		    finally {
		      output.close();
		    }
	}
}
 
Ich habe mir Deinen Code jetzt nicht ganz genau angeschaut, allerdings gibt es da eine Stelle, deren Existenzberechtigung ich nicht verstehe:
[HIGHLIGHT="Java"]private void b1ActionPerformed(ActionEvent evt)
{
->>>>>!!!editorpane = new JEditorPane();!!!<<<<<-
try {
editorpane.setPage(new URL("http://"+Local.getText()+"/"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

jsp = new JScrollPane(editorpane);
remove(jsp);

add(jsp);

}
[/HIGHLIGHT]

Wieso bitte löschst Du bei jedem Seitenaufruf die JEditorPane und legst sie neu an?
Ein Aufruf von setPage sollte vollkommen reichen 😉

Zum Thema Hyperlinks: JEditorPane

Edit: was machst Du, wenn jemand statt "www.google.de" "http://www.google.de" eingibt? Richtig, dann hat man "http://http://www.google.de". Und das gibt es nicht.
Deshalb solltest du Sachen wie [HIGHLIGHT="Java"]new URL("http://"+Local.getText()+"/")[/HIGHLIGHT] besser sein lassen. Stattdessen lönnte man abfragen, ob das "http://" schon in dem Eingabefeld steht.
 
Zuletzt bearbeitet von einem Moderator:
danke!
Aber noch eine frage, mit STRG+V
kann man dinge in ein normales JTextField einfügen, aber mit der Maus TextMarkieren usw...
wie mache ich das?
 
Es gibt Kontextmenüs. Du könntest dir eins mit "Kopieren", "Ausschneiden" und "Einfügen" machen und dieses aufrufen, sobald die rechte Maustaste gedrückt wurde...
 
Siehe dazu: JPopupMenu

Ob das PopupMenu geöffnet werden sollte fragt man besser mit MouseEvent.isPopupTrigger() ab, da die Tastenbelegung plattformspezifisch ist (Windows: Rechtsklick, andere Systeme machen das durchaus anders).
Ein MouseEvent bekommt man von einem MouseListener, den man an einer Komponente registriert.
 
oh, danke!
Eine Frage noch, wenn ich auf "myvideo" bin, dann kann der irgendwie die Videos net lesen, und wenn ich auf
google bin, und was bei der google suche eingebe, und bestätige, funktioniert diese Suchfunktion nicht
 
und wie könnte man das realisieren, dass man den Link, der Site, auf der man sich gerade befindet, in einem String verketten kann?
 
Willst Du die URL der aktuell geöffneten Seite?

Die bekommst Du über JEditorPane.getPage()

Siehe JEditorPane

Edit: In einer JEditorPane kannst Du nur HTML <= 3.2 anzeigen. Dinge wie Flash Plugins, Javascript etc werden nicht unterstützt.
 
aber irgendwie muss es doch möglich sein,
java script zu verwenden, oder nicht?
Das muss doch realisierbar sein, selbst Google ist von JavaScript, wenn man das nicht im INternet explorer verwenden kann, was dann?!
 
Vielleicht ist es möglich - allerdings nur sehr schwer!

Vor kurzer Zeit habe ich einmal nach einer Möglichkeit gesucht, den Mozilla in Java zu integrieren.
Dabei bin ich auf das hier gestoßen. Selbst ausprobiert habe ich es noch nicht, es ist nur in der Kategorie "interessante Links" gelandet. Vielleicht kannst Du es in Deiner Anwendung verwenden.
 
aber irgendwie muss es doch möglich sein,
java script zu verwenden, oder nicht?
Klar, in dem man einen Browser schreibt.
Browser != Widget das HTML rendered

@JohnMcLane
dafür braucht man kein Eclipse RCP, lediglich SWT. Dort gibt es ein Browser Widget (das wird auch für den Browser Support in Eclipse (RCP) verwendet) mit dem sich Firefox per XULRunner und MS Internet Explorer embedden lassen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben