Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Java]: JEditorPane e HTML

    salve a tutti,
    oggi ho un quesito circa l'uso e il funzionamento del JEditorPane.
    Praticamente io creo un foglio chiamato tabelle.html nel quale definisco varie tabelle. al termine della creazione di tale foglio, lancio una funzione da me creata che non fa altro che aggiornare un JPanel aggiungendo un JEditorPane che dovrebbe mostrare il contenuto del file tabelle.html e fin qui nessun problema lo fà correttamente, però non tiene conto degli stili che ho definito per le tabelle, ovvero il font che deve utilizzare ecc.
    se apro il file normalmente con doppioclick invece è tutto regolare!

    Definisco lo stile delle tabelle nel modo seguente:

    codice:
    "<head>"+"\n"+
                      "<style type=text/css>"+"\n"+
                      "body{background-color: #FFF;}"+"\n"+
                      "th{font-family: Arial;font-size: 7px;}"+"\n"+
                      "td{font-family: Arial;font-size: 9px;}"+"\n"+
                      "</style>"+"\n"+
                      "</head>"+"\n"+

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Il supporto di CSS (e di HTML) in JEditorPane è parecchio limitato, per non dire nullo.
    http://java.sun.com/javase/6/docs/ap...ditorPane.html

    Qualcosa si riesce lo stesso a fare, con le specifiche di cui al documento e correlati.

    Questa discussione contiene anche un suggerimento:
    http://forums.sun.com/thread.jspa?threadID=5181706

    Oppure puoi appoggiarti alla classe Desktop per lanciare una vera e propria pagina html nel browser di default del sistema in uso, o ancora "embeddare" il browser stesso in un tuo frame, utilizzando la famosa libreria jdic
    https://jdic.dev.java.net/
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Ti ringrazio per la risposta e scusami se rispondo adesso, ma sono arrivato in ufficio solo ora!
    bene ora mi spulcio i link che mi hai passato e spero di riuscire a risolvere!

  4. #4
    Ho trovato una soluzione abbastanza valida senza dovermi appoggiare ad ulteriori librerie! e la soluzione è il seguente spezzone di codice:

    codice:
    EasyParser.edit.setContentType("text/html");
              EasyParser.edit.setEditable(false); 
    
              // aggiungo un HTMLEditorKit all editor pane
              HTMLEditorKit kit = new HTMLEditorKit();
    
              EasyParser.edit.setEditorKit(kit);
    
              EasyParser.scroll = new JScrollPane(EasyParser.edit, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
              EasyParser.scroll.setBounds(10, 10, 990, 580);        
    
              // aggiungo gli stili al foglio html
              StyleSheet styleSheet = kit.getStyleSheet();
              styleSheet.addRule("body{background-color: #ffffff;}");
              styleSheet.addRule("th{font-family: Arial;font-size: 7px;}");
              styleSheet.addRule("td{font-family: Arial;font-size: 9px;}");
    
              // creo un documento, setto il jeditor pane e aggiungo html
              Document doc = kit.createDefaultDocument();
              EasyParser.edit.setDocument(doc);
    
              EasyParser.edit.setText(tabella);
              EasyParser.edit.setEditable(false);
    Ora mi rimane un ultimo dubbio. ho dovuto parsare una pagina html che contiene circa 1600 righe e la parsa tranquillamente, ma quando deve andare a visualizzarla nel JEditorPane mi dà l'errore di heap space!! però la JVM non ha raggiunto il livello massimo anzi tutt'altro!
    Cosa può essere?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non ne ho idea, puoi mettere la pagina online da qualche parte o quanto meno puoi postare l'errore completo?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Scusami se rispondo solo ora, comunque ecco l'errore che mi viene generato!

    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
            at javax.swing.text.SimpleAttributeSet.<init>(SimpleAttributeSet.java:40)
            at javax.swing.text.html.StyleSheet$LargeConversionSet.<init>(StyleSheet.java:761)
            at javax.swing.text.html.StyleSheet.convertAttributeSet(StyleSheet.java:717)
            at javax.swing.text.html.StyleSheet.addAttributes(StyleSheet.java:578)
            at javax.swing.text.AbstractDocument$AbstractElement.addAttributes(AbstractDocument.java:1971)
            at javax.swing.text.AbstractDocument$AbstractElement.<init>(AbstractDocument.java:1762)
            at javax.swing.text.AbstractDocument$LeafElement.<init>(AbstractDocument.java:2488)
            at javax.swing.text.html.HTMLDocument$RunElement.<init>(HTMLDocument.java:3699)
            at javax.swing.text.html.HTMLDocument.createLeafElement(HTMLDocument.java:376)
            at javax.swing.text.DefaultStyledDocument$ElementBuffer.insertElement(DefaultStyledDocument.java:1718)
            at javax.swing.text.DefaultStyledDocument$ElementBuffer.insertUpdate(DefaultStyledDocument.java:1405)
            at javax.swing.text.DefaultStyledDocument$ElementBuffer.insert(DefaultStyledDocument.java:1275)
            at javax.swing.text.DefaultStyledDocument.insert(DefaultStyledDocument.java:199)
            at javax.swing.text.html.HTMLDocument.insert(HTMLDocument.java:242)
            at javax.swing.text.html.HTMLDocument$HTMLReader.flushBuffer(HTMLDocument.java:3325)
            at javax.swing.text.html.HTMLDocument$HTMLReader.addContent(HTMLDocument.java:3265)
            at javax.swing.text.html.HTMLDocument$HTMLReader.blockClose(HTMLDocument.java:3196)
            at javax.swing.text.html.HTMLDocument$HTMLReader$BlockAction.end(HTMLDocument.java:2391)
            at javax.swing.text.html.HTMLDocument$HTMLReader.handleEndTag(HTMLDocument.java:2290)
            at javax.swing.text.html.parser.DocumentParser.handleEndTag(DocumentParser.java:223)
            at javax.swing.text.html.parser.Parser.parse(Parser.java:2233)
            at javax.swing.text.html.parser.DocumentParser.parse(DocumentParser.java:105)
            at javax.swing.text.html.parser.ParserDelegator.parse(ParserDelegator.java:73)
            at javax.swing.text.html.HTMLEditorKit.read(HTMLEditorKit.java:230)
            at javax.swing.JEditorPane.setText(JEditorPane.java:1459)
            at FunzioniParser.scriviHTML(FunzioniParser.java:1292)
            at EasyParser.ottieniRiga(EasyParser.java:298)
            at EasyParser$2.actionPerformed(EasyParser.java:109)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1115
            at javax.swing.text.BoxView.layoutMinorAxis(BoxView.java:821)
            at javax.swing.text.html.TableView.layoutMinorAxis(TableView.java:643)
            at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:327)
            at javax.swing.text.BoxView.layout(BoxView.java:683)
            at javax.swing.text.BoxView.setSize(BoxView.java:380)
            at javax.swing.text.BoxView.updateChildSizes(BoxView.java:349)
            at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:331)
            at javax.swing.text.BoxView.layout(BoxView.java:683)
            at javax.swing.text.BoxView.setSize(BoxView.java:380)
            at javax.swing.text.BoxView.updateChildSizes(BoxView.java:349)
            at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:331)
            at javax.swing.text.BoxView.layout(BoxView.java:683)
            at javax.swing.text.BoxView.setSize(BoxView.java:380)
            at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1701)
            at javax.swing.plaf.basic.BasicTextUI.modelToView(BasicTextUI.java:1033)
            at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1291)
            at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1270)
            at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    e gli errori continuano per un altro pezzetto..
    Se vuoi posso postarti il codice, sono due classi che operano tra loro!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.