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);
    

参考技术A 参考:
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滚动条位置问题的主要内容,如果未能解决你的问题,请参考以下文章