d4rkjy05un 2021-12-03 12:55 采纳率: 100%
浏览 49
已结题

怎么用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();    
    }
}

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-12-03 13:21
    关注
    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();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月9日
  • 已采纳回答 12月3日
  • 创建了问题 12月3日

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?