JScrollPane und JEditPane wollen nicht wirklich miteinander

Status
Nicht offen für weitere Antworten.

vegeta

Aktives Mitglied
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



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());
		}
		}
	
		}
}
 
Schreib anstatt:

Code:
scroller.getViewport().setViewPosition(oldPoint);

das:

Code:
editor.setCaretPosition(0);
 
Hi,

also das funktioniert so nicht, schade. Aber diese Anweisung führt theoretisch dazu das der balken am Anfang gesetzt wird. ich will mir die aktuelle position merken, vielleicht schiebe ich den regler in die mitte und wähle ein link aus. Ja und jetzt fährt der balken ans ende und ich bin wo anders nur nicht da wo ich den link ausgewählt hatte.

bye
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben