Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying HTML in Swing

Tags:

java

html

swing

I am working on a project of sorts to load HTML files from a server and display them in swing.

import java.io.*;
import java.net.*;
import java.util.regex.*;
import javax.swing.*;


public class webloader {
    public static void loadcode(){
        URL url = null;
        try {
            url = new URL("web"+File.separator+web.url+File.separator+"index.html");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        URLConnection con = null;
        try {
            con = url.openConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Pattern p = Pattern.compile("text/html;\\s+charset=([^\\s]+)\\s*");
        Matcher m = p.matcher(con.getContentType());
        String charset = m.matches() ? m.group(1) : "ISO-8859-1";
        Reader r = null;
        try {
            r = new InputStreamReader(con.getInputStream(), charset);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        StringBuilder buf = new StringBuilder();
        while (true) {
          int ch = 0;
        try {
            ch = r.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
          if (ch < 0)
            break;
          buf.append((char) ch);
        }
        String str = buf.toString();
        JFrame mainframe = new JFrame(web.url);
        mainframe.setSize(800, 750);
        mainframe.setResizable(false);
        JPanel website = new JPanel();
        JLabel webcontent = new JLabel(str);
        website.add(webcontent);
        mainframe.add(website);
        mainframe.setVisible(true);
    }
}

Error:

Loading test.com
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation
roblem:
        Syntax error on token ""web"", delete this token

        at webloader.loadcode(webloader.java:11)
        at web$1.actionPerformed(web.java:46)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sou
ce)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sou
ce)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sou
ce)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sou
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

I am quite new to Java, so if I seem to be stupid or not know what I am doing, that's because I am.

like image 821
Airis Avatar asked Dec 08 '12 12:12

Airis


People also ask

Can we use HTML in Java Swing?

HTML formatting can be used in all Swing buttons, menu items, labels, tool tips, and tabbed panes, as well as in components such as trees and tables that use labels to render text.

Is Java Swing still used in 2022?

JavaFX new fixes will continue to be supported on Java SE 8 through March 2022 and removed from Java SE 11. Swing and AWT will continue to be supported on Java SE 8 through at least March 2025, and on Java SE 11 (18.9 LTS) through at least September 2026.

Is Swing good for GUI?

It is platform independent unlike AWT and has lightweight components. It becomes easier to build applications since we already have GUI components like button, checkbox etc. This is helpful because we do not have to start from the scratch.


1 Answers

I was trying to access the file wrong.

Correct code:

import java.io.*;
import java.net.*;
import java.util.regex.*;
import javax.swing.*;


public class webloader {
    static JComponent page;
    public static void loadcode(){
        JEditorPane jep = new JEditorPane();
         jep.setEditable(false);   

         try {
           jep.setPage("http://(server):(port)/" + web.url);
         }
         catch (IOException e) {
           jep.setContentType("text/html");
           jep.setText("<html>Could not load webpage</html>");
         } 

         JScrollPane scrollPane = new JScrollPane(jep);     
         JFrame f = new JFrame(web.url);
         f.getContentPane().add(scrollPane);
         f.setSize(512, 342);
         f.show();
    }
}
like image 156
Airis Avatar answered Sep 30 '22 17:09

Airis