要求:
可以将纯文本的内容显示在屏幕上,可以用上下方向键控制滚屏,也可以自动滚屏。
辅助功能:可以调整文字大小、颜色、背景色、滚屏速度请问大侠,这个里边的自动滚屏怎么实现?还有怎么控制公平的速度?

解决方案 »

  1.   

    有一个控件 在swing里面的 JScrollBar
      

  2.   

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollBar;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;/**
     * http://bbs.csdn.net/topics/390325621?page=1#post-393293083
     * @author Administrator
     *
     */
    public class AutoMove extends JFrame{
    int value;
    int i;
    JTextArea jt=new JTextArea("sdgsdagfsafdfgdsgdrerwerweeeeeeeee"
    +"ddddddddddddddddddddddddddddddddddddddddddddddddddddd");
    JScrollPane js=new JScrollPane(jt);
    JButton jb=new JButton("Auto"); 
    public static void main(String[] args){
    new AutoMove();
    }
    public AutoMove(){
    jt.setLineWrap(true);
    js.setBackground(Color.red);
    add(jb,BorderLayout.SOUTH);
    add(js,BorderLayout.CENTER);
    setVisible(true);
    setSize(20,150);
      final JScrollBar jsb=js.getVerticalScrollBar();
      jsb.setMinimum(5);
    jb.addMouseListener(new MouseListener() {

    @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    final Timer t=new Timer();
    value=0;
    i=1;
    t.schedule(new TimerTask() {

    @Override
    public void run() {

        jsb.setValue(5*(i++));
        
        if(jsb.getValue()==value){
         t.cancel();
        }
        value=jsb.getValue();
    }
    },new Date(),50L);

    }

    @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub

    }
    });
    }}
      

  3.   

    t.cancel()结束了timer
    不知道如何得到有没有到滑到底部,所以我就判断两次的getValue()值是否相同
      

  4.   

    你写的很好,Timer我还从来没用过。以前都是用Thread代替了。
      

  5.   

    昨天想到用timer了但是具体的有些细节就想不通了,各种尝试,各种蛋疼啊。