java swing中jList滚动条位置问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java swing中jList滚动条位置问题相关的知识,希望对你有一定的参考价值。
list.setSelectedIndex(int); 索引定位
list.setSelectedValue(obj, boolean);//值定位
import java.awt.Point;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
public class $ extends JFrame
public static void main(String[] args)
$ $ = new $();
$.setLayout(null);
$.setSize(800, 600);
$.setVisible(true);
$.setResizable(false);
$.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JList list = new JList();
list.setListData(new String[]"1", "2" ,"3", "3" ,"5","1", "2" ,"3", "3" ,"6");
JScrollPane jScrollPane = new JScrollPane(list);
jScrollPane.setSize(100, 100);
//list.setSelectedValue("5", true); //多个值相同时会导致无响应
//索引
int index = 9;
list.setSelectedIndex(index);
Point p = list.indexToLocation(index);
JScrollBar jScrollBar = jScrollPane.getVerticalScrollBar();//获得垂直滚动条
jScrollBar.setValue(p.y);//设置垂直滚动条位置
$.add(jScrollPane);
final JLabel last = new JLabel("I'm the last");
int maxRow = 20;
int maxColumn = 10;
JComponent content = new JPanel(new GridLayout(maxRow, maxColumn));
for (int row = 0; row < maxRow; row++)
for (int column = 0; column < maxColumn; column++)
JComponent parent = new JPanel();
JLabel label = new JLabel("i'm in " + row + "/" + column);
if (row == (maxRow - 1) && column == (maxColumn - 1))
label = last;
last.setBorder(BorderFactory.createLineBorder(Color.RED));
parent.add(label);
content.add(parent);
JXFrame frame = wrapWithScrollingInFrame(content, "scroll");
Action action = new AbstractAction("scrollLastVisible")
@Override
public void actionPerformed(ActionEvent e)
last.scrollRectToVisible(last.getBounds());
;
addAction(frame, action);
show(frame, frame.getPreferredSize().width / 2, frame.getPreferredSize().height / 2);
以上是关于java swing中jList滚动条位置问题的主要内容,如果未能解决你的问题,请参考以下文章