实现 JScrollPane 自动滚动

实现 JScrollPane 自动滚动

 

设计中需要用JList做一个列表,然后实现列表内容搜索功能,搜索匹配后要求 JScrollPane 自动滚动到匹配内容的位置。

可以先使用JList.indexToLocation()方法获得需要滚动到的位置,然后设置垂直滚动条的定位位置即可。

 

import java.awt.Point; import javax.swing.DefaultListModel; import javax.swing.JScrollBar; /** * <p>AutoScroll.java</p> * <p>Created on Apr 17, 2009, 3:48:21 PM</p> * <p>Copyright (c) 2007-2009. CUCKOO Workgroup, USTC, P.R.China</p> * @author Ren Jian */ public class AutoScroll { private javax.swing.JList jList; private javax.swing.JScrollPane jScrollPane; private DefaultListModel listModel = new DefaultListModel(); private void search(String text) { int index = listModel.indexOf(text); if (index != -1) { jList.setSelectedIndex(index); Point p = jList.indexToLocation(index);//获得index的位置 JScrollBar jScrollBar = jScrollPane.getVerticalScrollBar();//获得垂直滚动条 jScrollBar.setValue(p.y);//设置垂直滚动条位置 } else { System.out.println("not match"); } } }

 

如果是文本显示,可以将鼠标焦点移至输出文字的末尾,以实现JTextPane自动滚屏的功能。
javax.swing.text.Document doc = jTextPane.getDocument(); jTextPane.setCaretPosition(doc.getLength());

你可能感兴趣的:(c,String,search,Class,import)