Web browser in 2 pasi

Posted by | January 17, 2009 | Java | 4 Comments

Recent intr-un proiect am avut nevoie de un web browser propriu. In loc sa folosesc un activeX de Internet Explo(r/d)er am ales sa imi constriuesc propria componenta din mai multe considerente: in primul rand proiectul era in Java si nu doream sa folosesc JNI (java native interface- pentru cei care nu sunt familiarizati cu termenul in doua cuvinte este vorba de o tehnologie ce va permite sa accesati cod nativ din programele de java.) si al doilea motiv era ca nu aveam nevoie de un web browser foarte complex care sa suporte ‘nspe mii de plugin-uri.
Iata un exemplu minimal :

import javax.swing.event.HyperlinkEvent;
import javax.swing.*;
import java.io.*;
import javax.swing.event.HyperlinkListener;

public class SimpleWebBrowser {
static JEditorPane jep = new JEditorPane();
public static void main(String[] args) {

String initialPage = “http://www.google.ro/”;
if (args.length > 0) initialPage = args[0];

jep.setEditable(false);

jep.addHyperlinkListener(new HyperlinkListener() {

public void hyperlinkUpdate(HyperlinkEvent e) {
try {
jep.setPage(e.getURL());
} catch (IOException ex) {
Logger.getLogger(SimpleWebBrowser.class.getName()).log(Level.SEVERE, null, ex);
}
}
});

try {
jep.setPage(initialPage);
}
catch (IOException e) {
System.err.println(“Usage: java SimpleWebBrowser url”);
System.err.println(e);
System.exit(-1);
}

JScrollPane scrollPane = new JScrollPane(jep);
JFrame f = new JFrame(“Simple Web Browser”);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.getContentPane().add(scrollPane);
f.setSize(512, 342);
f.show();

}

}

Si iata cum ar arata “miniborwser-ul”

About Andrei Tara

Andrei is a developer/geek who loves creating high quality and efficient applications, always following the best practices in software engineering. He loves the challenge of learning new, exciting things and playing with new languages, frameworks, and tools.

4 Comments

  • Foarte folositor exemplul …. astept mai multe articole ca acesta!

  • Tech Tomarea says:

    Super, la mai multe! 🙂

  • lae says:

    paralel cu subiectul si motivele pt exemplul asta, afirm asta:
    exista si activex-ul de la mozzila …. if you hate microsoft sooo much 🙂

    ai vre-o idee cum poti sa trimiti/controlezi …. tate(toate) headerulrile/amprentele care sunt trimise cand ceri date de la un server dintr-un browser? (da da … dar daca as putea formula mai bine intrebarea …. as gasi raspunsul pe google … dar nu pot)

  • admin says:

    “activeX-urile” de la mozila se numesc plugin-uri si asta cu un anume motiv adica sunt concepute sa functioneze doar in cadrul frameworkului (freamework-ul intern al browserului). Un activeX adevarat ii cu totul altceva; ii un fel de componenta generica bazat pe tehnologia COM ceia ce perimite integrarea lor in orice aplicatie fara ca celui sau celei care il foloseste sa ii pese cum functioneaza intern.

    In legatura cu intrebarea despre heder, ce anume vrei sa controlezi/modifici/alterzi ? chestia aia cu aget type, referer si prostiile alea sau hederul in sine ?? 😀

Leave a Reply