我尝试垂直设置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已经。
答案 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);
}
}
结果: