怎么用Jslider操控文字?

以下是我编的code,我还想加一个功能,就是当我把slider往右滑的时候,被我删除的文字就会复原。请各位指教。

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.BadLocationException;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame {
    private JTextArea ta = new JTextArea(5, 10);
    private JSlider slider = new JSlider(0, 100, 0);
    public Main() {
        super(“haha”);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new BorderLayout());
        c.add(ta, BorderLayout.CENTER);
        c.add(slider, BorderLayout.SOUTH);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5); 
        slider.setPaintLabels(true); 
        slider.setPaintTicks(true);
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSlider s = (JSlider) e.getSource();
                if(ta.getText().length() <= s.getValue()) {
                    s.setValue(ta.getText().length());
                } 
                else {
                    try {
                        ta.setText(ta.getText(0, s.getValue()));
                    } catch (BadLocationException e1) {
                        e1.printStackTrace();
                    } 
                }
            }
        });
        ta.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                JTextArea t = (JTextArea) e.getSource();
                int size = t.getText().length();
                if(size >= 100) {
                    try {
                        t.setText(t.getText(0, 100));
                    } catch (BadLocationException e1) {
                        e1.printStackTrace();
                    }
                }
                slider.setValue(size);
            }
        });
        setSize(300, 200);
        setVisible(true);
    }
    public static void main(String[] args) {
        new Main();    
    }
}

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.BadLocationException;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame {
    private JTextArea ta = new JTextArea(5, 10);
    private JSlider slider = new JSlider(0, 100, 0);
    private String str="";
    public Main() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new BorderLayout());
        c.add(ta, BorderLayout.CENTER);
        c.add(slider, BorderLayout.SOUTH);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        slider.setPaintLabels(true);
        slider.setPaintTicks(true);
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSlider s = (JSlider) e.getSource();
                if (str.length()<s.getValue()){
                    ta.setText(str);
                }else{
                    ta.setText(str.substring(0, s.getValue()));
                }
            }
        });
        ta.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                JTextArea t = (JTextArea) e.getSource();
                int size = t.getText().length();
                str=ta.getText();
                if(size >= 100) {
                    try {
                        t.setText(t.getText(0, 100));
                    } catch (BadLocationException e1) {
                        e1.printStackTrace();
                    }
                }
                slider.setValue(size);
            }
        });
        setSize(300, 200);
        setVisible(true);
    }
    public static void main(String[] args) {
        new Main();
    }
}

这个程序有点问题,应该把ta里面的内容保存到字符串变量,对字符串取值