andbin
18-10-2006, 11:11
Ciao, oggi ho io un problemino, sto sviluppando una applicazione Java in cui dentro un JFrame ho un JTabbedPane. Ogni pagina del JTabbedPane contiene un JScrollPane che contiene un JEditorPane. Il JEditorPane deve visualizzare del codice HTML (che genero io da codice).
In sostanza ho un codice del tipo:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class Prova
{
public static void main (String[] args)
{
final String text =
"<html>" +
"<head>" +
"<style>" +
"h1 { font: bold 200% sans-serif; color: red; }" +
"table { border: 1px solid black; }" +
"</style>" +
"</head>" +
"<body>" +
"<h1>Prova</h1>" +
"<h2>Prova</h2>" +
"<h3>Prova</h3>" +
"<table width='100%' cellspacing='0' cellpadding='3'>" +
"<tr>" +
"<td>Prova</td>" +
"<td>Prova</td>" +
"</tr>" +
"<tr>" +
"<td>Prova</td>" +
"<td>Prova</td>" +
"</tr>" +
"</body>" +
"</html>";
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
JFrame frame = new JFrame ();
JTabbedPane tabbedPane = new JTabbedPane ();
JEditorPane editorPane = new JEditorPane ("text/html; charset=ISO-8859-1", text);
editorPane.setEditable (false);
JScrollPane scrollPane = new JScrollPane (editorPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
tabbedPane.addTab ("Prova", scrollPane);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane ().add (tabbedPane, BorderLayout.CENTER);
frame.setSize (400, 350);
frame.setVisible (true);
}
});
}
}Non fate caso allo stile, è solo un esempio veloce di cosa faccio nella applicazione.
In sostanza ho 2 problemi:
(A) Se provate ad avviare questo esempio, noterete (spero) una specie di "flash" iniziale, ossia, il contenuto del frame viene visualizzato, poi sparisce per qualche frazione di secondo e poi ricompare. Non so se è un problema del mio PC. Comunque quale può essere il motivo?? Si può evitare?
(B) La documentazione dice che il JEditorPane supporta codice HTML 3.2. Perfetto, tanto non devo fare cose strane e il contenuto, come ho detto, lo genero io. Ho visto che supporta anche degli stili CSS. Nell'esempio sopra lo stile applicato a 'h1' funziona perfettamente, mentre il border applicato alla table, non lo accetta. Quindi mi chiedo: quali stili accetta e quali no? :confused:
Grazie.
In sostanza ho un codice del tipo:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class Prova
{
public static void main (String[] args)
{
final String text =
"<html>" +
"<head>" +
"<style>" +
"h1 { font: bold 200% sans-serif; color: red; }" +
"table { border: 1px solid black; }" +
"</style>" +
"</head>" +
"<body>" +
"<h1>Prova</h1>" +
"<h2>Prova</h2>" +
"<h3>Prova</h3>" +
"<table width='100%' cellspacing='0' cellpadding='3'>" +
"<tr>" +
"<td>Prova</td>" +
"<td>Prova</td>" +
"</tr>" +
"<tr>" +
"<td>Prova</td>" +
"<td>Prova</td>" +
"</tr>" +
"</body>" +
"</html>";
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
JFrame frame = new JFrame ();
JTabbedPane tabbedPane = new JTabbedPane ();
JEditorPane editorPane = new JEditorPane ("text/html; charset=ISO-8859-1", text);
editorPane.setEditable (false);
JScrollPane scrollPane = new JScrollPane (editorPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
tabbedPane.addTab ("Prova", scrollPane);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane ().add (tabbedPane, BorderLayout.CENTER);
frame.setSize (400, 350);
frame.setVisible (true);
}
});
}
}Non fate caso allo stile, è solo un esempio veloce di cosa faccio nella applicazione.
In sostanza ho 2 problemi:
(A) Se provate ad avviare questo esempio, noterete (spero) una specie di "flash" iniziale, ossia, il contenuto del frame viene visualizzato, poi sparisce per qualche frazione di secondo e poi ricompare. Non so se è un problema del mio PC. Comunque quale può essere il motivo?? Si può evitare?
(B) La documentazione dice che il JEditorPane supporta codice HTML 3.2. Perfetto, tanto non devo fare cose strane e il contenuto, come ho detto, lo genero io. Ho visto che supporta anche degli stili CSS. Nell'esempio sopra lo stile applicato a 'h1' funziona perfettamente, mentre il border applicato alla table, non lo accetta. Quindi mi chiedo: quali stili accetta e quali no? :confused:
Grazie.