jpanel放入JScrollPane 高度滚动条不显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jpanel放入JScrollPane 高度滚动条不显示相关的知识,希望对你有一定的参考价值。

只显示水平,不显示垂直,也设置了setPreferredSize但还是不显示。
public class Pro_DataInputer extends JFrame implements ActionListener
private JPanel jp1;
private JPanel jp2;
private JPanel jp3;
private JLabel jldate;
private JTextField jtdate;
private JScrollPane jsp;

public Pro_DataInputer(ArrayList<Vector> list)

this.init();

private void init()


jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jldate = new JLabel("输入日期(格式YYYYMM)");
jtdate = new JTextField();
setSize(600,600);
setLayout(null);
jp1.setBounds(0, 0, 600, 100);
jp2.setPreferredSize(new Dimension(600, 600));
jp3.setBounds(0, 400, 600, 200);
jp3.setSize(600, 150);
jsp = new JScrollPane(jp2);
jsp.getHorizontalScrollBar().setAutoscrolls(false);
jsp.getVerticalScrollBar().setAutoscrolls(true);
jsp.setBounds(0, 100, 600, 300);
getContentPane().add(jsp);
jsp.setViewportView(jp2);
jp1.setLayout(null);
jp1.setBackground(Color.white);
jp2.setBackground(Color.darkGray);
jp3.setBackground(Color.YELLOW);
jldate.setBounds(20, 70, 150, 30);
jtdate.setBounds(170, 70, 130, 30);
jp1.add(jldate);
jp1.add(jtdate);
add(jp1);
add(jsp);
add(jp3);
setLocationRelativeTo(null);
setVisible(true);


其实这段代码已经显示了高度滚动条,只是没有露出来而已。将代码中的宽设置下就好了!比如:

 setSize(700,600);

就生成了如图:

还有

jsp.getHorizontalScrollBar().setAutoscrolls(false);

jsp.getVerticalScrollBar().setAutoscrolls(true);

这两行代码注释掉就好。

我也是java学习中。。。一起努力!

参考技术A

jsp.getHorizontalScrollBar().setAutoscrolls(false);

jsp.getVerticalScrollBar().setAutoscrolls(true);


一个true,一个false


scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);


布局可以换成BorderLayout

JScrollPane 上面放 JPanel 怎么让 JScrollPane 在适当的时候显示滚动条

参考技术A 你需要把JPanel放到Box里,再用把Box放到JScrollPane里就行了,我这样做就可以的。 参考技术B JScrollPane
自身本来就是一个面板,为什么你还要在上面加个面板呢!之所以会出现你那种情况,是因为你所有的内容都放到了JPanel
上了。所以无论多长,他影响的是JPanel
,而不是JScrollPane。所以达不到你要的那种效果。方法:去掉JPanel
。。让所有的内容直接放到JScrollPane
。当它内容填充到了整个面板的时候。它会自动出现滚动条的,希望对你有帮助!
参考技术C 在jpLend的大小发生变化后,在jpLend里面调用getParent().doLayout();
为了使jpLend的大小变化能反映出来,应该重写jpLend的getPrefferedSize()方法

以上是关于jpanel放入JScrollPane 高度滚动条不显示的主要内容,如果未能解决你的问题,请参考以下文章

JScrollPane 不起作用/显示滚动条

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

JScrollPane 在顶部添加 JPanel 并保持当前滚动视图

包含 JPanel 的 JScrollPane 不会滚动

如何使JScrollPane(在BorderLayout中,包含JPanel)平滑自动滚动

Java GUI:将JPanel添加进JScrollPane