Hallo zusammen,
ich benutze ein JTextPane, um aufbereitete HTML-Dateien darzustellen. Die Dateien sind zwischen 500k und 2MB groß. Das JTextPane liegt auf einem scrollbaren Panel:
Wenn ich das JTextPane nun mit Daten fülle, dauert dies bis zu 5 Sekunden! Ich erstelle mir mittlerweile die HTML-Datei selber schon im Speicher (StringBuffer, der einen String von ca. 2.5 Mio. Zeichen ergibt), wodurch es minimal (0,3 Sekunden) schneller geworden ist. Aber letztendlich dauert das Einlesen immer noch viel zu lange.
Hat vielleicht irgend jemand eine Idee, was ich falsch mache?
Gruß,
AMiGA
ich benutze ein JTextPane, um aufbereitete HTML-Dateien darzustellen. Die Dateien sind zwischen 500k und 2MB groß. Das JTextPane liegt auf einem scrollbaren Panel:
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.html.*;
public class MyPanel extends JScrollPane
{
public MyPanel()
{
super();
setAutoscrolls(true);
JPanel panelText = new JPanel();
panelText.setLayout(new BorderLayout());
setViewportView(getPanelText());
setSize(300, 200);
getVerticalScrollBar().setBlockIncrement(100);
getVerticalScrollBar().setUnitIncrement(10);
}
private JPanel getPanelText()
{
JPanel panelText = new JPanel();
panelText.setLayout(new BorderLayout());
panelText.add(getTextPane(), java.awt.BorderLayout.CENTER);
return panelText;
}
private JTextPane getTextPane()
{
JTextPane textPane = new JTextPane();
textPane.setContentType("text/html");
textPane.setDocument(new HTMLDocument());
textPane.setDoubleBuffered(true);
textPane.setEditorKit(new HTMLEditorKit());
textPane.setHighlighter(new LineHighlighter(Color.ORANGE));
textPane.addMouseListener(new java.awt.event.MouseAdapter()
{
@Override
public void mousePressed(java.awt.event.MouseEvent e)
{
// listener.mouseClicked();
}
});
// textPane.addCaretListener(new TextPaneCaretListener());
return textPane;
}
}
Wenn ich das JTextPane nun mit Daten fülle, dauert dies bis zu 5 Sekunden! Ich erstelle mir mittlerweile die HTML-Datei selber schon im Speicher (StringBuffer, der einen String von ca. 2.5 Mio. Zeichen ergibt), wodurch es minimal (0,3 Sekunden) schneller geworden ist. Aber letztendlich dauert das Einlesen immer noch viel zu lange.
Java:
//
textPane.getEditorKit().read(new StringReader(bigString), textPane.getDocument(), 0);
//
Hat vielleicht irgend jemand eine Idee, was ich falsch mache?
Gruß,
AMiGA