JScrollPane设置垂直位置是不可能的

时间:2016-11-21 19:28:08

标签: java scrollbar

我尝试垂直设置JScroll Pane的位置,但似乎它在某个时刻受到限制。水平它工作得很好。

    JPanel panel = new JPanel(null);
    panel.setBorder(BorderFactory.createLineBorder(Color.red));
    panel.setPreferredSize(new Dimension(800, 800));
    JLabel l = new JLabel("test1");
    l.setBounds(40,40,100,100); panel.add(l);
    JLabel l2 = new JLabel("test2");
    l2.setBounds(440,440,100,100);panel.add(l2);


    JScrollPane scroll = new JScrollPane(panel);

    scroll.getVerticalScrollBar().setValue(500);
    scroll.getHorizontalScrollBar().setValue(500);


    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());
    add(scroll, BorderLayout.CENTER);
    setSize(300, 300);
    setVisible(true);

图片:http://i.imgur.com/nIqBlrv.png

我可以将垂直数设置为我想要的任何数字。它不会超越这个位置。

希望有人可以帮助我。 Ty已经。

1 个答案:

答案 0 :(得分:0)

试试这个:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class VerticalScrollPane {

    public static void main(String[] args) {        
        JPanel panel = new JPanel(null);
        panel.setBorder(BorderFactory.createLineBorder(Color.red));
        panel.setPreferredSize(new Dimension(800, 800));
        panel.setVisible(true);

        JLabel l = new JLabel("test1");
        l.setBounds(40,40,100,100); panel.add(l);
        JLabel l2 = new JLabel("test2");
        l2.setBounds(440,440,100,100);panel.add(l2);

        JScrollPane scroll = new JScrollPane(panel);        
        scroll.getViewport().setViewPosition(new Point(500,350)); //  Use this

        JFrame frame = new JFrame();
        frame.getContentPane().add(scroll);
        frame.setVisible(true); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(scroll, BorderLayout.CENTER);
        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

结果:

Vertical ScrollPane Java