Hallo,
ich habe folgendes Problem:
ich benutze eine JTextArea innerhalb einer JScrollPane, um Einträge anzuzeigen. Jeder Eintrag
steht in einer neuen Zeile (ähnlich einer Liste).
nach dem hinzufügen der Zeilen möchte ich, daß ich die erste Zeile sehe, standardmäßig wird
aber immer bis zur letzten Zeile gescrollt.
ich habe schon so ziemlich alles an funktionen versucht (u.a. setValue), aber die ScrollBar bleibt
immer so stehen daß der letzte Eintrag angezeigt wird.
hat jemand eine idee wie man das ändern könnte?
mein beispiel-code:
ich habe folgendes Problem:
ich benutze eine JTextArea innerhalb einer JScrollPane, um Einträge anzuzeigen. Jeder Eintrag
steht in einer neuen Zeile (ähnlich einer Liste).
nach dem hinzufügen der Zeilen möchte ich, daß ich die erste Zeile sehe, standardmäßig wird
aber immer bis zur letzten Zeile gescrollt.
ich habe schon so ziemlich alles an funktionen versucht (u.a. setValue), aber die ScrollBar bleibt
immer so stehen daß der letzte Eintrag angezeigt wird.
hat jemand eine idee wie man das ändern könnte?
mein beispiel-code:
Code:
package de.test;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class ScrollTest extends JFrame implements ActionListener {
private JTextArea txtArea;
private JScrollPane panScroll;
private JButton btnSetText;
private JButton btnDelText;
private final String AC_SET = "setText";
private final String AC_DEL = "delText";
public ScrollTest()
{
initComponents ();
}
private void initComponents()
{
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
btnSetText = new JButton("set Text");
btnSetText.addActionListener (this);
btnSetText.setActionCommand (AC_SET);
btnDelText = new JButton("del Text");
btnDelText.addActionListener (this);
btnDelText.setActionCommand (AC_DEL);
txtArea = new JTextArea();
txtArea.setEditable (false);
panScroll = new JScrollPane(txtArea);
panScroll.setPreferredSize (new Dimension(120, 50));
panScroll.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
this.setLayout (new FlowLayout());
this.add (btnSetText);
this.add (btnDelText);
this.add (panScroll);
this.pack ();
}
/**
* @param args
*/
public static void main (String[] args)
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new ScrollTest().setVisible(true);
}
});
}
public void actionPerformed (ActionEvent ae)
{
if ( ae.getActionCommand () == AC_SET)
{
txtArea.setText ("eins\nzwei\ndrei\nvier\nfuenf\nsechs");
panScroll.getVerticalScrollBar ().setValue (0); //bewirkt nichts
}
else if ( ae.getActionCommand () == AC_DEL)
{
txtArea.setText ("");
}
}
}