Hallo Leute,
ich hab folgendes Problem, welches mich schon mehrere Stunden kostet
ok ich will einen String als Html darstellen, indem Links hinterlegt sind. (klappt wunderbar)
Dazu benutze ich JEditorPane, damit auch längere Texte dargestellt werden können liegt der JEditorPane in
einem JScrollPane. Nun möchte ich den Inhalt neu Zeichnen mit SetText(String str). So jetzt tritt etwas was ich nicht
haben möchte und zwar springt mir der Scrollbalken ans ende
Cool wenn mir jmd weiter helfen kann danke im voraus
hier ein biselle code
ich hab folgendes Problem, welches mich schon mehrere Stunden kostet
ok ich will einen String als Html darstellen, indem Links hinterlegt sind. (klappt wunderbar)
Dazu benutze ich JEditorPane, damit auch längere Texte dargestellt werden können liegt der JEditorPane in
einem JScrollPane. Nun möchte ich den Inhalt neu Zeichnen mit SetText(String str). So jetzt tritt etwas was ich nicht
haben möchte und zwar springt mir der Scrollbalken ans ende
Cool wenn mir jmd weiter helfen kann danke im voraus
hier ein biselle code
Code:
public class JEditorPaneEx extends JFrame implements ActionListener, HyperlinkListener
{
// EditorPane erzeugen
JEditorPane editor = new JEditorPane();
JScrollPane scroller=new JScrollPane();
JButton btn= new JButton("drückmich");
Point oldPoint;
public void fill()
{
StringBuffer s=new StringBuffer();
for (int i=0;i<20;i++)
{
s.append("<a href=\"" + i + "\">Hallo </a>
");
}
// Text in EditorPane einfügen
editor.setText (s.toString());
//scroller=new JScrollPane(editor);
scroller.getViewport().add(editor);
}
public JEditorPaneEx()
{
super ("JEditorPane-Beispiel");
btn.addActionListener(this);
editor.addHyperlinkListener(this);
editor.setEditable(false);
// EditorPane auf HTML bzw. Text setzen
editor.setContentType("text/html; charset=EUC-JP");
getContentPane().setLayout(new BorderLayout());
fill();
getContentPane().add(scroller,BorderLayout.CENTER);
getContentPane().add(btn,BorderLayout.SOUTH);
setSize (300, 200);
}
public static void main (String[] args)
{
JEditorPaneEx editorEx = new JEditorPaneEx();
editorEx.show();
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent arg0)
{
// Benutze ich um die position des Balken zu merken
oldPoint = scroller.getViewport().getViewPosition();
fill();
//Hier setzt ich den balken wieder an die richtig position, klappt aber siehe HyperLink verarbeitung
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
scroller.getViewport().setViewPosition(oldPoint);
}
});
}
/* (non-Javadoc)
* @see javax.swing.event.HyperlinkListener#hyperlinkUpdate(javax.swing.event.HyperlinkEvent)
*/
public void hyperlinkUpdate(HyperlinkEvent e) {
// TODO Auto-generated method stub
if(e.getEventType()==HyperlinkEvent.EventType.ENTERED) {
try {
// problem spring immer ans Ende :(
oldPoint = scroller.getViewport().getViewPosition();
mWert= Integer.parseInt(e.getDescription());
markieren=true;
fill();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
scroller.getViewport().setViewPosition(oldPoint);
}
});
}// End try
catch (Exception e1) {
System.out.println("Abbruch --> wrong URL: " + e.toString());
}
}
}
}