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

用java做了个多人聊天室,显示内容用的JList和JSCrollPane,我想让滚动面板的滚动条

java GUI编程(swing)之四swing下拉框,列表框,滚动窗口

javaswing 带滚动条文本域边框问题

Java swing怎么搞出滚动条

java swing编程问题:一个jframe中添加一个jpanel后,为jpanel添加一个滚动条,当jpanel中内容过多时滑动

java swing JPanel添加在JScrollPane上,有垂直的滚动条,可是滚动条拉到底,只显示了JPanel的一部分。