以下是我编的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();
}
}