将JScrollPane添加到GridBagLayout
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将JScrollPane添加到GridBagLayout相关的知识,希望对你有一定的参考价值。
每次我点击程序中的一个按钮,我都会向JPanel
添加5行。最终,行溢出,我想添加一个JScrollPane,所以我可以向下滚动并查看新行。
我知道如何让它为TextArea
工作,但我似乎无法弄清楚当我有一个GridBagLayout
时如何使它工作。下面,我将附上设置我的面板的代码。
JPanel panelMain = new JPanel();
getContentPane().add(panelMain);
JPanel panelForm = new JPanel(new GridBagLayout());
panelMain.add(panelForm);
JScrollPane scrollpane = new JScrollPane(panelForm);
panelMain.add(scrollpane);
当我跑,我的代码我得到一个封闭GridBagLayout
的盒子,但滚动窗格无处可见。
答案
JPanel panelMain = new JPanel();
getContentPane().add(panelMain);
您通常会将滚动窗格直接添加到框架中。没有必要使用“panelMain”。
panelMain.add(panelForm);
那条线不是必需的。组件只能属于单个父组件。您稍后将“panelForm”添加到滚动窗格。
所以基本代码是:
JPanel panelForm = new JPanel(new GridBagLayout());
JScrollPane scrollpane = new JScrollPane(panelForm);
frame.add(scrollpane);
但滚动窗格无处可见。
滚动条仅在默认情况下需要时显示。添加空面板不会导致显示滚动条。单击几次按钮,使用相应的GridBagConstraints将子组件添加到“panelForm”。然后你需要使用:
panelForm.revalidate();
panelForm.repaint();
revalidate()导致调用布局管理器,因此scrollpane可以确定是否需要滚动条。
以上是关于将JScrollPane添加到GridBagLayout的主要内容,如果未能解决你的问题,请参考以下文章
动态创建 jCheckBox 并添加到 jScrollPane
为啥 JOptionPane 中的 JScrollPane 不显示其所有内容?